java.lang.NoClassDefFoundError: javax.mail.Address error при запуске из AIX - PullRequest
1 голос
/ 09 августа 2011

Я пытаюсь запустить программу Java на моем сервере AIX.Я написал classpath

/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.Все файлы .jar, которые были в Eclipse, когда он работал раньше, находятся в файле / usr / jdk.

Ответы [ 2 ]

3 голосов
/ 09 августа 2011

A NoClassDefFoundError означает, что ( цитирует соответствующий JavaDoc) :

Брошен, если виртуальная машина Java или экземпляр ClassLoader пытаются загрузить определение класса (как часть обычного вызова метода или как часть создания нового экземпляра с использованием нового выражения) и нет определение класса может быть найдено.

искомое определение класса существовало, когда в данный момент выполняется класс был скомпилирован, но определение больше не найдено.

Две вещи, которые нужно проверить:

  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
    
0 голосов
/ 09 августа 2011

NoClassDefFoundError означает, что ClassLoader смог найти класс, но его не удалось загрузить. Обычно это происходит, когда какое-либо статическое поле в классе-нарушителе не может быть инициализировано. Так что я уверен, что ваш classpath может быть правильным; но некоторые статические поля в этом классе не могут быть установлены правильно.

...