我使用javamail 1.4.2 api和jdk / jre 1.6.0u16遇到了一个奇怪的错误。我在jdk和jre文件夹中放置了解压缩的javamail-1.4.2文件夹(以及需要的MySQL Connector-J 5.1.7),如下面的%classpath%。
.;“C:\程序 Files \ Java \ jdk1.6.0-16 \ jre \ lib \ ext \ mysql-connector-java-5.1.7-bin“;”C:\ Program Files \ Java \ jdk1.6.0-16 \ jre \ lib \ ext \ JavaMail的-1.4.2 \ mail.jar中 “;” C:\ PROGRAM 文件\的Java \ jdk1.6.0_16 \ BIN “;” C:\ PROGRAM 文件\ GameLabInventory \ GameLabInventory-7.0.jar “;” C:\ PROGRAM Files \ Java \ jre6 \ lib \ ext \ mysql-connector-java-5.1.7-bin“;”C:\ Program Files \ Java \ jre6 \ lib \ ext \ javamail-1.4.2 \ mail.jar“; < / p>
但是当我使用命令
运行我编译的jar时C:\Program Files\Java\jre6\bin>java -cp %classpath% -jar "C:\Program Files\GameLabInventory\GameLabInventory_7.0.jar"
我收到以下错误消息:
线程“main”中的异常 java.lang.NoClassDefFoundError: 使用javax /邮件/ MessagingException 在gamelab.inventory.GameLabInventory.main(GameLabInventory.java:62) 引起: 抛出java.lang.ClassNotFoundException: javax.mail.MessagingException的 在java.net.URLClassLoader $ 1.run(未知 资源) 在java.security.AccessController.doPrivileged(Native 方法) 在java.net.URLClassLoader.findClass(未知 资源) 在java.lang.ClassLoader.loadClass(未知 资源) 在sun.misc.Launcher $ AppClassLoader.loadClass(未知 资源) 在java.lang.ClassLoader.loadClass(未知 资源) 在java.lang.ClassLoader.loadClassInternal(未知 资源) ......还有1个
我的设置在这里找不到任何问题,希望你们可以帮助我。谢谢!
这是清单文件:
Manifest-Version: 1.0
Main-Class: gamelab.inventory.GameLabInventory
答案 0 :(得分:1)
使用-jar时,java会覆盖类路径设置(-cp)。但是,在此配置中,可以在jar的清单文件中指定类路径jar。
答案 1 :(得分:1)
根据java tool的文档:
使用[-jar]选项时, JAR文件是所有用户的来源 类和其他用户类路径 设置被忽略。
您可以在Class-Path attribute中指定JAR file“指定[您的]应用程序或扩展程序所需的扩展程序或库的相对URL。”
答案 2 :(得分:0)
我遇到了类似的问题(与你的问题不一样,因为我与春天有关),发现此链接很有用:
http://forum.springsource.org/showthread.php?t=65840&page=3
似乎JDK中的实现更改可能导致此行为。引用链接:
“我设法使用Java 6(1.6.0_07)在我的Mac开发盒上重现了这个问题。然后我使用Java 5在我的Mac上尝试了它,并且无法重现这个问题。至关重要的是,在Java 5的情况下, JVM将使用javax.activation API和1.1.1 javax激活包中的实现,而在Java 6上,它将使用JRE中的任何内容(JRE的任何部分优先于dm Server的lib目录中的内容)然后我在Ubuntu盒子上尝试了这个应用程序,这次是使用Java 6 1.6.0_10。我无法重现这个问题。“
和/但是: -
“我刚刚遇到了同样的问题”没有MIME类型的对象DCH“但是在Ubuntu java版本”1.6.0_13“。所以我不知道你们是如何通过升级到1.6.0_11解决它的。 我所做的是将mailcab.default复制到我自己的包中,并且它有效。似乎是一个我还不完全理解的类加载问题。“