【问题标题】:how to run a java program that contains external libraries如何运行包含外部库的java程序
【发布时间】:2013-09-29 11:01:50
【问题描述】:

假设我在目录栏中有一个 java 文件 foo.java,它已经编译了

bar
   --foo.java
   --foo.class

但是你仍然需要一些其他目录中的库

/opt
    --file1.class
    --file2.class
    subdir
         --file3.class
    subdir2
         --subdir3
              --file4.class

你能简单地运行 foo 程序吗(在 bar 目录中)

 java foo -cp /opt ?

【问题讨论】:

  • 当然,但不起作用。
  • foo的包名是什么?
  • 假设在 foo.java 中未声明
  • 类应根据包名放置在正确的层次结构中。当然,不指定包名的情况并非如此,但不建议这样做。有关更多详细信息,请参阅此答案:stackoverflow.com/a/18094288/597657

标签: java


【解决方案1】:

试试这个:

对于窗户:

java -cp .;pathtojar/jar1;pathtojar/jar2 foo

对于 Linux:

java -cp .:pathtojar/jar1:pathtojar/jar2 foo

如需了解 PATH、CLASSPATH 等,请阅读:http://docs.oracle.com/javase/tutorial/essential/environment/paths.html

【讨论】:

  • 所以我可以指定一个根目录作为类路径并让它递归检查子元素吗?
  • @Daniel 不是,每个 jar 文件都需要提到完整的目录路径。
  • 重点是在现实生活中,你可能在根目录下有一个复杂的 dir 结构,你不想在 ur -cp 选项中一一指定
  • 我有一个导入大量库代码的源文件怎么样。如何以简单的方式指定每个库元素。
  • @Daniel 通配符如 * 适用于目录中的多个 jar。但是您仍然需要将不同的所需目录添加到您的类路径中。例如:java -cp "/lib1/*;/lib2/*"
猜你喜欢
  • 2014-06-04
  • 2011-02-24
  • 1970-01-01
  • 2013-06-08
  • 2012-02-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多