java.lang.NoClassDefFoundError:javax.mail.Address从AIX运行时出错

java.lang.NoClassDefFoundError:javax.mail.Address从AIX运行时出错,java,jar,classpath,aix,Java,Jar,Classpath,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/common

我正在尝试在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文件中。

A表示(:

如果Java虚拟机或类加载器实例尝试 在类的定义中加载(作为普通方法调用的一部分或 作为使用新表达式创建新实例的一部分)和 可以找到该类的定义

当前执行时已存在搜索的类定义 类已编译,但无法再找到该定义

有两件事需要检查:

  • 首先,您的类路径中似乎有一个输入错误(尽管在编译代码时它不可能存在,否则它不会成功编译,所以这显然不是您看到的异常的根本原因。):

    应该是

    /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表示类加载器能够找到类,但无法加载。这通常发生在发生问题的类中的某个静态字段无法初始化时。因此我确信您的类路径可能是正确的;但该类中的某个静态字段无法正确设置。

    啊,谢谢,修复了问题输入错误,但是我仍然得到相同的错误。您是否将类路径传递到java以及javac?更新的answer.NoClassDefFound表示类定义。我什么时候说过可以找到类定义?我只是说.class文件在类路径中可用。当您说NoClassDefFoundError表示类LOAder能够找到类。JavaDoc反驳了这一点。是的,类加载器确实能够在类路径中找到类。否则会引发ClassNotFound异常。找到类和找到类定义是两件不同的事情。很公平——那么我误解了你的答案。
    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