Pra*_*eth 54 java jar classpath maven
我有一个Maven项目,它生成一个jar文件并将所有依赖项复制到target/lib文件夹.我想在客户端的机器(windows)上执行这个项目.所以,我复制myproject.jar到C:\xyz文件夹和所有依赖项到C:\xyz\lib文件夹.如何从客户端的命令提示符执行此项目?我试图java -cp lib\*.jar -jar myproject.jar从C:\xyz文件夹使用,但它抛出以下错误.
Exception in thread "main" java.lang.NoClassDefFoundError: lib\commons-codec-1/3/jar
Caused by: java.lang.ClassNotFoundException: lib\commons-codec-1.3.jar
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
Could not find the main class: lib\commons-codec-1.3.jar. Program will exit.
Run Code Online (Sandbox Code Playgroud)
我想如果我在classpath(如java -cp lib\dep1.jar;dep2.jar)中指定所有依赖项,它将解决问题,但我不想这样做,因为我已经有40个库,并且它可能会在将来的版本中增长.有一个更好的方法吗?
Sua*_*ehi 63
你不能同时使用-jar,并-cp在命令行上-看Java文档是说,如果你使用-jar:
JAR文件是所有用户类的源,并忽略其他用户类路径设置.
你可以这样做:
java -cp lib\*.jar;. myproject.MainClass
注意;.在-cp参数中,解决Java命令行错误.另请注意,这是该命令的Windows版本.Unix上的路径分隔符是:.
jam*_*amp 52
在UNIX上使用java 1.7 -
java -cp myjar.jar:lib/*:. mypackage.MyClass
Run Code Online (Sandbox Code Playgroud)
在Windows上,您需要使用';' 代替 ':' -
java -cp myjar.jar;lib/*;. mypackage.MyClass
Run Code Online (Sandbox Code Playgroud)
小智 5
无论使用哪种操作系统,以下命令均应起作用:
java -cp "MyJar.jar;lib/*" com.mainClass
Run Code Online (Sandbox Code Playgroud)
始终使用引号,并请注意lib / *。jar将不起作用。
| 归档时间: |
|
| 查看次数: |
137323 次 |
| 最近记录: |