【问题标题】:java.lang.NoClassDefFoundError: javax/mail/Address errorjava.lang.NoClassDefFoundError: javax/mail/地址错误
【发布时间】:2015-01-07 16:59:13
【问题描述】:

我在lib 文件夹中有mail.jar 的项目。我创建了一个清单文件为

Manifest-Version: 1.0
Main-Class: mainfile
Class-Path: lib/mail.jar

然后我使用 eclipse 导出了jar 文件。

我现在尝试以 java -jar myjar.jar 执行 jar 文件,但出现错误

java.lang.NoClassDefFoundError: javax/mail/Address

任何指针将不胜感激

【问题讨论】:

  • 如何运行 jar?包含javax.mail.Address 的 jar 不在类路径中。
  • 清单文件必须以新行结尾。这是你的情况吗?
  • 我使用 java -jar myjar.jar 运行,因为我认为包含 javax.mail.Address 的 mail.jar 存在于 jar 中并在清单文件中设置为类路径。
  • 7zipWinZip打开jar看看是不是真的。
  • 我尝试解压缩并注意到带有 jar 的 lib 文件夹不存在。所以我尝试将它直接放在我的项目中,并在我的清单中修改了类路径。现在我在 MyJar 中看到了 mail.jar 文件,但仍然有同样的问题

标签: java eclipse jar


【解决方案1】:
  1. 在您的课程路径中添加mail.jar
  2. 确保您的课程路径中没有拼写错误。
  3. 检查导出的jar 文件,如果没有你必须使用eclipse 选项Extract required libraries into generated JAR,是否所有需要的jar 都到了那里。

【讨论】:

  • 是的。我在清单文件 Class-Path 中有 mail.jar 。但仍然面临这个问题。
  • 我选择了 create runnable jar file with eclipse and extract library 选项,我看到 jar 文件正在运行。感谢大家的帮助
【解决方案2】:

来自 Oracle documentation

文本文件必须以换行符或回车符结尾。最后 如果行不以新行结束或 回车。

所以它应该看起来像这样:

Manifest-Version: 1.0
Class-Path: lib/mail.jar
Created-By: 1.7.0_06 (Oracle Corporation)

另外,请确保您的 MANIFEST.MF 在 META-INF 文件夹中。

【讨论】:

  • @stackuser 您的 MANIFEST.MF 在 META-INF 文件夹中吗?
【解决方案3】:

在我的例子中,类路径已更新,新的类路径缺少 mail.jar 和 activation.jar


所以链接/复制

  1. mail.jar
  2. activation.jar

进入类路径 lib 目录可能是解决方案之一。


【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-09-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-20
    相关资源
    最近更新 更多