【发布时间】:2012-10-12 15:45:18
【问题描述】:
我有一个 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 个库并且它可能会在未来的版本中增长。有没有更好的方法来做到这一点?
【问题讨论】: