java.lang. NoClassDefFoundError: javax/mail/Authenticator, что случилось?

Пока нет «хорошего» решения. Однако вы можете значительно сузить аргумент типа, чтобы исключить многие ошибки для вашего гипотетического «INumeric» ограничения, как показано выше.

static bool IntegerFunction & lt; T & gt; (значение T), где T: IComparable, IFormattable, IConvertible, IComparable & lt; T & gt ;, IEquatable & lt; T & gt ;, struct {...

31
задан bluestella 27 October 2009 в 01:36
поделиться

3 ответа

Даже я сталкивался с подобной ошибкой. Попробуйте ниже 2 шагов (первый из которых уже был рекомендован здесь) - 1. Добавьте зависимости к Вашему pom.xml

         <dependency>
            <groupId>javax.mail</groupId>
            <artifactId>mail</artifactId>
            <version>1.4.5</version>
        </dependency>

        <dependency>
            <groupId>javax.activation</groupId>
            <artifactId>activation</artifactId>
            <version>1.1.1</version>
        </dependency>
  1. , Если это не работает, вручную помещает эти jar файлы в Вашем .m2\repository\javax\<folder>\<version>\ каталог.
1
ответ дан 27 November 2019 в 21:28
поделиться

You need to add two jars into the WEB-INF/lib directory or your webapp (or lib directory of the server):

47
ответ дан 27 November 2019 в 21:28
поделиться

Хотя возможно, что это связано с отсутствием jar-файла в пути к классам, это может быть не так.

Важно держать в голове два или три разных исключения. case:

  1. java.lang.ClassNotFoundException Это исключение указывает, что класс не был найден в пути к классам. Это указывает на то, что мы пытались загрузить определение класса, а класс не существует в пути к классам.

  2. java.lang.NoClassDefFoundError Это исключение указывает, что JVM искала определение во внутренней структуре данных определения класса. класса и не нашел. Это отличается от того, чтобы сказать, что он не может быть загружен из пути к классам. Обычно это указывает на то, что мы ранее пытались загрузить класс из пути к классам, но по какой-то причине это не удалось - теперь мы пытаемся снова, но мы даже не будем пытаться его загрузить, потому что нам не удалось загрузить его ранее. Более ранняя ошибка могла быть ClassNotFoundException или ExceptionInInitializerError (указывающая на сбой в статическом блоке инициализации) или любое количество других проблем. Дело в том, что NoClassDefFoundError не обязательно является проблемой пути к классам.

Я бы посмотрел на источник javax.mail.Authenticator и посмотрел, что он делает в статике. инициализатор. (Посмотрите на инициализацию статической переменной и статический блок, если он есть.) Если вы не получаете исключение ClassNotFoundException до NoClassDefFoundError , вам почти гарантировано, что это ошибка проблема статической инициализации.

Я встречал подобные ошибки довольно часто, когда файл hosts неправильно определяет адрес localhost, а блок статической инициализации полагается на InetAddress.getLocalHost () . 127.0.0.1 должен указывать на localhost (и, возможно, также на localhost.localdomain). Оно НЕ должно указывать на фактическое имя хоста компьютера (хотя по какой-то причине многие старые установщики RedHat Linux предпочитали указывать его неправильно).

26
ответ дан 27 November 2019 в 21:28
поделиться
Другие вопросы по тегам:

Похожие вопросы: