Как будто вы пытаетесь получить доступ к объекту, который является null
. Рассмотрим ниже пример:
TypeA objA;
. В это время вы только что объявили этот объект, но не инициализировали или не инициализировали. И всякий раз, когда вы пытаетесь получить доступ к каким-либо свойствам или методам в нем, он будет генерировать NullPointerException
, что имеет смысл.
См. Также этот пример:
String a = null;
System.out.println(a.toString()); // NullPointerException will be thrown
Попробуйте добавить это в Maven POM:
<dependency>
<groupId>com.sun.mail</groupId>
<artifactId>javax.mail</artifactId>
<version>1.5.2</version>
</dependency>
Проблема в том, что вы пытаетесь использовать 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 «предоставленной» областью зависимости
blockquote>В частности, в вашем случае вам нужны либо
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>