一尘不染

从命令提示符执行具有多个类路径库的jar文件

java

我有一个Maven项目,该项目生成一个jar文件并将所有依赖项复制到target/lib文件夹。我想在客户端计算机(Windows)上执行该项目。因此,我将复制myproject.jarC:\xyz文件夹,并将所有依赖项复制到文件C:\xyz\lib夹。如何从客户端的命令提示符下执行此项目?我尝试java -cp lib\*.jar -jar myproject.jarC:\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.

我想,如果我在classpath中指定所有依赖项(如java -cp lib\dep1.jar;dep2.jar),它将解决此问题,但是我不想这样做,因为我已经有40个库,并且在将来的版本中可能会增加。有一个更好的方法吗?


阅读 245

收藏
2020-09-08

共1个答案

一尘不染

让maven生成一个批处理文件以启动您的应用程序。这是最简单的方法。

您可以将appassembler-maven-
plugin
用于此类目的。

2020-09-08