我有一个使用Maven构建的项目,它生成一个jar文件并将所有依赖项复制到target/lib
文件夹中。我想在客户端的机器(Windows)上执行此项目。因此,我将myproject.jar
复制到C:\xyz
文件夹中,将所有依赖项复制到C:\xyz\lib
文件夹中。如何从客户端命令提示符中执行此项目?
我尝试在C:\xyz
文件夹中使用java -cp lib\*.jar -jar myproject.jar
,但会抛出以下错误。
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.
我认为如果在类路径中指定所有依赖项(例如java -cp lib\dep1.jar;dep2.jar
),它将摆脱问题,但我不想这样做,因为我已经有40个库了,并且它可能会在未来版本中增加。 有更好的方法吗?
-cp
和-jar
不能同时使用。我有一个需要用户提供JDBC库才能正常使用的CLI程序,在将其打包为可执行的JAR文件时会遇到一些挑战。 - Christopher Schultz