![](/img/trans.png)
[英]java.lang.NoClassDefFoundError: javax/mail/Address error
[英]java.lang.NoClassDefFoundError: javax.mail.Address error when running from AIX
我正在尝试在我的 AIX 服务器上运行 java 程序。 我写了类路径
/usr/java6/bin/javac -classpath :.:/usr/jdk/commons-net-3.0.1.jar:/usr/jdk/classes12.jar:/usr/jdk/mysql-connector-java-5.1.17-bin.jar:/usr/jdk/jtds-1.2.5.jar:/urs/jdk/mail.jar:/usr/jdk/joda-time-1.6.2.jar:/usr/jdk/commons-codec-1.4.jar:/usr/jdk/commons-logging-1.1.1.jar:/usr/jdk/httpclient-4.1.1.jar:/usr/jdk/httpclient-cache-4.1.1.jar:/usr/jdk/httpcore-4.1.jar:/usr/jdk/httpmime-4.1.1.jar:/usr/jdk/mailapi.jar:/usr/jdk/pop3.jar:/usr/jdk/smtp.jar:/usr/jdk/dsn.jar:/usr/jdk/imap.jar -d . *.java
这似乎编译正确。 然后当我运行程序时
java daily_transmission
我收到错误 java.lang.NoClassDefFoundError: javax.mail.Address。 之前工作时在Eclipse中的所有.jar文件都在/usr/jdk文件中。
NoClassDefFoundError
意味着( 引用相关的 JavaDoc) :
如果 Java 虚拟机或 ClassLoader 实例尝试加载 class 的定义(作为正常方法调用的一部分或作为使用新表达式创建新实例的一部分)并且找不到 ZA2F2ED2AA2A4F8EBC2CBB4C21 的定义。
搜索到的 class 定义在编译当前正在执行的 class 时存在,但无法再找到该定义。
要检查的两件事:
首先,您的类路径中似乎有一个错字(尽管在您编译代码时它不存在,或者它不会成功编译,所以这显然不是您看到的异常的根本原因.):
/urs/jdk/mail.jar
应该
/usr/jdk/mail.jar
确保您还使用 -classpath 选项将类路径传递给java
以及javac
以在运行时获取那些.jar
文件:
java -classpath:.:/usr/jdk/commons-net-3.0.1.jar:/usr/jdk/classes12.jar:/usr/jdk/mysql-connector-java-5.1.17-bin.jar:/usr/jdk/jtds-1.2.5.jar:/urs/jdk/mail.jar:/usr/jdk/joda-time-1.6.2.jar:/usr/jdk/commons-codec-1.4.jar:/usr/jdk/commons-logging-1.1.1.jar:/usr/jdk/httpclient-4.1.1.jar:/usr/jdk/httpclient-cache-4.1.1.jar:/usr/jdk/httpcore-4.1.jar:/usr/jdk/httpmime-4.1.1.jar:/usr/jdk/mailapi.jar:/usr/jdk/pop3.jar:/usr/jdk/smtp.jar:/usr/jdk/dsn.jar:/usr/jdk/imap.jar daily_transmission
NoClassDefFoundError 表示 ClassLoader 能够找到 class,但无法加载。 这通常发生在无法初始化违规 class 中的某些 static 字段时。 所以我确信你的类路径可能是正确的; 但是无法正确设置 class 中的某些 static 字段。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.