我正在尝试使用 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
如果您碰巧知道要运行的主类的名称,则可以在不使用 -jar
命令行参数的情况下运行它:
java -classpath .;myjar.jar;lib/referenced-class.jar my.package.MainClass
如果你使用的是 linux,你应该使用 ":" 而不是 ";"在类路径中。
如果您使用 java -jar
运行 jar 文件,则 -classpath
参数 is ignored。您需要在 jar 的清单文件中设置类路径,如下所示:
类路径:jar1-name jar2-name directory-name/jar3-name
请参阅 Java 教程:Adding Classes to the JAR File's Classpath。
编辑:我看到你已经尝试在清单中设置类路径,但你确定你使用了正确的语法吗?如果您像显示的那样在“Class-Path
”之后跳过“:
”,它将不起作用。
dir/*
和 dir/*.jar
不起作用。
尝试
java -cp "your_jar.jar:lib/referenced_jar.jar" com.your.main.Main
如果您在 Windows 上,则应使用 ;
而不是 :
您可以尝试在 Eclipse 中导出为“Runnable jar”。我也有问题,当我导出为“jar”时,但当我导出为“Runnable jar”时我从来没有问题。
unzip -p the_jar.jar META-INF/MANIFEST.MF | grep Main-Class
轻松找到