gpt4 book ai didi

java - 为什么在 mvn :assembly 构建的批处理中使用 args4j 时出现 java.lang.NoClassDefFoundError

转载 作者:行者123 更新时间:2023-12-02 02:24:41 27 4
gpt4 key购买 nike

为了进行各种实验,我在github中负责一个java项目。 .

Maven 构建后,程序使用脚本 bat 运行。

现在我打开了一个分支,因为我将使用库 args4j解析参数。

构建工作正常,jar 存在于目录 lib 中,但是当我运行时,我有这个异常的堆栈跟踪

Exception in thread "main" java.lang.NoClassDefFoundError: org/kohsuke/args4j/CmdLineException at java.lang.Class.getDeclaredMethods0(Native Method) at java.lang.Class.privateGetDeclaredMethods(Class.java:2625) at java.lang.Class.getMethod0(Class.java:2866) at java.lang.Class.getMethod(Class.java:1676) at sun.launcher.LauncherHelper.getMainMethod(LauncherHelper.java:494) at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:486) Caused by: java.lang.ClassNotFoundException: org.kohsuke.args4j.CmdLineException at java.net.URLClassLoader$1.run(URLClassLoader.java:366) at java.net.URLClassLoader$1.run(URLClassLoader.java:355) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:354) at java.lang.ClassLoader.loadClass(ClassLoader.java:425) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308) at java.lang.ClassLoader.loadClass(ClassLoader.java:358) ... 6 more

在bat中,我配置了类路径,以便args4j jar位于lib中:这是bat脚本的说明

SET JAVA_DIR=C:\Program Files\Java\jdk1.7.0_80\bin\
>CUT
"%JAVA_DIR%\java" -jar ".\lib\buildCSS-1.0.jar" -cp ".\lib\" -conf "./conf/environment.properties"

我不明白java.lang.NoClassDefFoundError的处理。 jar 存在并通过 -cp 选项链接

请问您有什么想法(和解决方案)吗?

最佳答案

您不能在命令行上组合 -jar-cp 参数。如果 java 命令看到 -jar ,它会将 jarfile 名称后面的所有内容视为应用程序参数,并且忽略任何早期的类路径参数。

你有两个选择:

  • 使用-cp,将主 JAR 包含在类路径中,并将主类的完整类名放在命令行上。
  • 使用 -jar,并将“Class-Path”属性添加到主 JAR 的 list 文件中,列出所有依赖项。

引用文献:

注意:由于您使用 Maven 构建 JAR 文件,因此还有其他选项;例如

  • 使用“Shade”插件创建一个可执行文件“uber-jar”,其中包含单个 JAR 中的所有依赖项。

关于java - 为什么在 mvn :assembly 构建的批处理中使用 args4j 时出现 java.lang.NoClassDefFoundError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47972176/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com