簡體   English   中英

從 AIX 運行時 java.lang.NoClassDefFoundError: javax.mail.Address 錯誤

[英]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 時存在,但無法再找到該定義。

要檢查的兩件事:

  1. 首先,您的類路徑中似乎有一個錯字(盡管在您編譯代碼時它不存在,或者它不會成功編譯,所以這顯然不是您看到的異常的根本原因.):

     /urs/jdk/mail.jar

    應該

    /usr/jdk/mail.jar
  2. 確保您還使用 -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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM