gpt4 book ai didi

java - 另一个 NoClassDefFoundError 难题

转载 作者:行者123 更新时间:2023-12-02 00:08:00 26 4
gpt4 key购买 nike

我创建了两个 jar 文件 my.common.jar,其中包含辅助类和方法(主要是静态方法)。我还创建了一个 jar 文件 test.jar,其中包含一个 main 方法,该方法调用 my.common.jar 中的类中的静态方法。

当我像这样启动 main 时,一切正常:

java -classpath path/to/myjars/my.common.jar:./test.jar test.Tester

Tester 是 test.jar 中包含方法 main 的类。

但是当我这样运行时,我得到了NoClassDefFoundError my/common/Myclass:

java -classpath path/to/myjars/my.common.jar -jar test.jar

我很努力,但我无法弄清楚为什么失败或如何解决这个问题。我非常感谢您的帮助。

-----附录----我忘了提及 test.jar 中的 list 文件如下所示:

    Manifest-Version: 1.0
Build-Jdk: 1.6.0_13
Created-By: Apache Maven
Main-Class: test.Tester
Archiver-Version: Plexus Archiver

最佳答案

您不能在命令行上同时使用-classpath-jar 选项。使用其中之一...但不能同时使用两者。

当您使用 -jar 选项时,该命令期望在 JAR 文件 list 中找到入口点类和运行时类路径。您的 -classpath 参数将被忽略,CLASSPATH 环境变量也将被忽略。引用java manual page :

"When you use this option, the JAR file is the source of all user classes, and other user class path settings are ignored."

如果您的(可执行)JAR 文件需要使用其他 JAR 中的内容,那么它在 list 中需要一个 Class-Path 属性。该属性值是一个空格分隔的 URL 列表;请参阅here .

因此,在您的情况下,您需要将如下内容添加到 JAR 的 list 中:

Class-path: /path/to/myjars/my.common.jar

This page Java 教程的内容涵盖了该主题,并包含警告:Class-path list 行必须以 CR 或 NL 正确终止,JVM 才能识别它。

关于java - 另一个 NoClassDefFoundError 难题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13463204/

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