java.lang.NoClassDefFoundError: com / sun / mail / util / MailLogger [дубликат]

Как будто вы пытаетесь получить доступ к объекту, который является null. Рассмотрим ниже пример:

TypeA objA;

. В это время вы только что объявили этот объект, но не инициализировали или не инициализировали. И всякий раз, когда вы пытаетесь получить доступ к каким-либо свойствам или методам в нем, он будет генерировать NullPointerException, что имеет смысл.

См. Также этот пример:

String a = null;
System.out.println(a.toString()); // NullPointerException will be thrown
15
задан Biscuit128 17 July 2014 в 16:16
поделиться

2 ответа

Попробуйте добавить это в Maven POM:

<dependency>
    <groupId>com.sun.mail</groupId>
    <artifactId>javax.mail</artifactId>
    <version>1.5.2</version>
</dependency>
30
ответ дан Magic Wand 18 August 2018 в 12:33
поделиться
  • 1
    Yup bingo - огромное спасибо :) – Biscuit128 17 July 2014 в 16:36
  • 2
    Как пояснялось на странице проекта JavaMail , com.sun.mail: javax.mail - это вся реализация; это то, что вам нужно, если вы используете приложение. Если вам нужно только скомпилировать ваше приложение (например, если вы собираетесь его развернуть в другом месте для его запуска), все, что вам нужно, это javax.mail: javax.mail-api. Вам нужно только javax.activation, если вы используете старшую JDK; он включен в новые JDK. – Bill Shannon 17 July 2014 в 18:48
  • 3
    Где я могу получить «com.sun.mail: javax.mail»? библиотека? Все, что я могу найти в Интернете, это только javax.mail-1.6.1, который хорош только для компиляции. – Jan Horčička 23 June 2018 в 08:45
  • 4
    Я нашел его, это javax.mail.jar, который можно загрузить на этой странице: javaee.github.io/javamail – Jan Horčička 23 June 2018 в 08:58

Проблема в том, что вы пытаетесь использовать javax.mail-api.jar. Это неправильная библиотека. JavaMail - спецификация Java EE, интерфейсы этой спецификации публикуются в этом javax.mail-api-1.6.1.jar, который работает только при компиляции. Он не обеспечивает реализацию спецификации, поэтому он не работает во время выполнения.

Во время выполнения вам необходимо использовать реализацию спецификации JavaMail. Вы можете найти ссылочную реализацию на https://javaee.github.io/javamail/ (но есть и другие, например, серверы приложений Java EE обычно включают в себя один).

Для javax.mail-api.jar, https://javaee.github.io/javamail/ говорит:

Только определения API JavaMail, подходящие для компиляции; использовать только с Maven «предоставленной» областью зависимости

В частности, в вашем случае вам нужны либо javax.mail.jar, либо mailapi.jar + банки определенных протоколов, которые вы хотите использовать. Например, mailapi.jar + smtp.jar, если вам нужна поддержка smtp (s).

С помощью Maven вы можете использовать

<dependency>
    <groupId>com.sun.mail</groupId>
    <artifactId>javax.mail</artifactId>
    <version>1.6.1</version>
</dependency>
0
ответ дан Mark Rotteveel 18 August 2018 в 12:33
поделиться
Другие вопросы по тегам:

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