【问题标题】:java.lang.NoClassDefFoundError - Generating Executable Jarjava.lang.NoClassDefFoundError - 生成可执行 Jar
【发布时间】:2023-04-02 15:05:01
【问题描述】:

我在 Windows 2000 上创建了我的 JAR,其中包含以下目录/文件:

  • manifest.txt
  • com

lib 包含我想成为我的 JAR 一部分的所有 JARS。 com 包含我的类文件,下面是 manfiest.txt 文件

Main-Class: com.as.qst.result.ResultTriggerSchedular 
Class-Path: lib/axis.jar lib/c3p0-0.9.1.1.jar lib/commons-discovery-0.2.jar lib/commons-logging-1.0.4.jar lib/jaxrpc.jar lib/log4j-1.2.16.jar lib/medplus-hub-8.2-wsclients.jar lib/medplus-hub-13.1-jaxws-clients.jar lib/quartz-2.2.1.jar lib/quartz-jobs-2.2.1.jar lib/saaj.jar lib/slf4j-api-1.6.6.jar lib/slf4j-log4j12-1.6.6.jar lib/ wsdl4j-1.5.1.jar lib/xercesImpl.jar com\as\qst\result

我使用以下命令生成我的 JAR

  jar cvfm test.jar manifest.txt com lib

它已经成功创建了一个 JAR 文件,但是当我尝试使用它运行它时

java -jar test.jar

它不执行并抛出上述异常。我对版本为 1.7 的 Windows 7 使用了相同的过程,即使 manifest.txt com\as\qst\result 中没有类文件路径,它也能正常工作。除了在清单中定义之外,还有什么与类路径有关吗?为什么它可以在 Windows 7 中运行?

【问题讨论】:

  • 异常跟踪在哪里?
  • 它抛出异常为Exception in thread "main" java.lang.NoClassDefFoundError: com/ad/qst/result/ResultTriggerScehdular,没有别的
  • 您是复制粘贴还是重新输入?因为它有多个拼写错误。
  • 你可以在 lib 之前尝试“./”,让我们知道它是否有效
  • 当然,但它甚至无法找到我的主要课程...

标签: java jar classpath noclassdeffounderror


【解决方案1】:

您的类路径条目中不需要类文件路径。因此,不要将com\as\qst\result 添加到您的class-path

此外,您不能将其他 jar 文件打包到可运行的 jar 中。

其他所需的 jar 必须与您的 jar 文件在同一文件夹中提供(可能在单独的文件夹中)并添加当前目录“。” (不带引号)到您的class-path

希望这会有所帮助。

编辑

刚刚找到这个Stackoverflow Link。这可能会给你更多的洞察力。请仔细阅读。

【讨论】:

  • 我确实更改了我的类路径以将 ./ 添加到所有 jar 中,而不是将这些 jar 打包到我的 jar 中。但它仍然给出同样的例外。我也阅读了链接,它说当清单中的主类名称完成时,至少工具能够找到在我的情况下没有发生的主类。找到我的主类后,它将读取其他 jar。
  • 您是否将当前目录添加到您的类路径中?
猜你喜欢
  • 1970-01-01
  • 2021-08-15
  • 1970-01-01
  • 2010-12-22
  • 2019-08-05
  • 2014-04-09
  • 2017-09-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多