我有一个Maven项目,该项目生成一个jar文件并将所有依赖项复制到target/lib文件夹。我想在客户端计算机(Windows)上执行该项目。因此,我将复制myproject.jar到C:\xyz文件夹,并将所有依赖项复制到文件C:\xyz\lib夹。如何从客户端的命令提示符下执行此项目?我尝试java -cp lib\*.jar -jar myproject.jar从C:\xyz文件夹中使用,但是会引发以下错误。
target/lib
myproject.jar
C:\xyz
C:\xyz\lib
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.
我想,如果我在classpath中指定所有依赖项(如java -cp lib\dep1.jar;dep2.jar),它将解决此问题,但是我不想这样做,因为我已经有40个库,并且在将来的版本中可能会增加。有一个更好的方法吗?
java -cp lib\dep1.jar;dep2.jar
让maven生成一个批处理文件以启动您的应用程序。这是最简单的方法。
您可以将appassembler-maven- plugin用于此类目的。