73

我正在尝试使用 Java 从命令行(Windows)调用一个类(主要方法)。
该类导入其他类(其他罐子)。

我总是从我的主程序导入的类中得到“类未找到异常”。

这是我尝试过的:

  • 添加一个 CLASSPATH 环境。var 与引用的库所在的路径(不起作用)

  • java -jar myjar.jar从命令行调用“”时,我尝试了所有这些不同的参数:“ -classpath lib/”,“ -classpath ./lib/”,“ -classpath lib”,“ -cp lib/*”,“ -cp lib/\*”,“ -classpath lib/referenced-class.jar”,“ -classpath ./lib/referenced-class.jar”(lib是引用的jar所在的位置)

  • 我尝试将所有引用的 jar 打包到我的主类所在的 jar 中......

  • 尽管如此,我还尝试使用以下命令指定清单文件中的类: Class-path referenced-jar.jar并且我还尝试了Class-path lib/referenced-jar.jar

4

4 回答 4

117

-jar如果您碰巧知道要运行的主类的名称,则可以在不使用命令行参数的情况下运行它:

java -classpath .;myjar.jar;lib/referenced-class.jar my.package.MainClass

如果你使用的是 linux,你应该使用 ":" 而不是 ";" 在类路径中。

于 2009-06-03T17:22:34.397 回答
59

如果您使用 运行 jar 文件,则忽略java -jar-classpath参数。您需要在 jar 的清单文件中设置类路径,如下所示:

Class-Path: jar1-name jar2-name directory-name/jar3-name

请参阅 Java 教程:将类添加到 JAR 文件的类路径

编辑:我看到你已经尝试在清单中设置类路径,但你确定你使用了正确的语法吗?如果你像你展示的那样:在“”之后跳过'' Class-Path,它就行不通。

于 2009-06-03T17:19:32.527 回答
13

尝试

java -cp "your_jar.jar:lib/referenced_jar.jar" com.your.main.Main

如果你在 Windows 上,你应该使用;而不是:

于 2009-06-03T17:22:17.827 回答
3

您可以尝试在 Eclipse 中导出为“Runnable jar”。我也有问题,当我导出为“jar”时,但当我导出为“Runnable jar”时我从来没有问题。

于 2009-06-03T17:20:37.627 回答