Java:如何从命令行导入jar文件

73 java command-line jar classpath

我正在尝试使用Java从命令行(Windows)调用类(main方法).
该类导入其他类(其他jar).

我总是从我的主程序导入的类中获得"class not found exception".

这是我试过的:

  • 添加CLASSPATH环境.var与引用的lib所在的路径(不工作)

  • 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 ...

  • 尽管如此,我还尝试使用以下内容在Manifest文件中指定类: Class-path referenced-jar.jar我也尝试过Class-path lib/referenced-jar.jar

Ada*_*ter 117

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

java -classpath .;myjar.jar;lib/referenced-class.jar my.package.MainClass
Run Code Online (Sandbox Code Playgroud)

如果您使用的是Linux,则应使用":"而不是";" 在类路径中.

  • 非常感谢,我的第一个Scala"hello world"jar还活着;-)对于记录 - 在Unix中你使用":"而不是";",如果是更多的lib jar,你只需添加更多的jar文件名分隔用";"/":" (12认同)
  • 为了清楚起见,jar必须明确地在类路径中.指定/ lib目录效率很低. (9认同)
  • "如果你碰巧知道主类的名字".您可以轻松找到`unzip -p the_jar.jar META-INF/MANIFEST.MF | grep Main-Class` (2认同)

Mic*_*ers 59

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

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

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

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


art*_*emb 13

尝试

java -cp "your_jar.jar:lib/referenced_jar.jar" com.your.main.Main
Run Code Online (Sandbox Code Playgroud)

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