java.lang.ClassNotFoundException: com.sun.mail.util.MessageRemovedIOException

При обновлении приложения с jdk6 до jdk8 мы получаем следующую ошибку: Message msg = new MimeMessage(session);

 SEVERE: Servlet.service() for servlet [default] in context with path [] threw exception [java.lang.reflect.InvocationTargetException] with root cause
java.lang.ClassNotFoundException: com.sun.mail.util.MessageRemovedIOException
    at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1333)
    at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1167)

Кто-нибудь сталкивался с такой же или связанной проблемой при обновлении своего Java-приложения?

РЕДАКТИРОВАТЬ: тот же код работает с Java6.

3 ответа

Решение

У вас есть смесь классов JavaMail из разных версий JavaMail в вашем пути к классам. Какой сервер приложений вы используете и что находится в каталоге lib вашего веб-приложения?

Я использовал это, и это сработало:

<dependency>
    <groupId>com.sun.mail</groupId>
    <artifactId>javax.mail</artifactId>
    <version>1.5.5</version>
</dependency>

У меня была похожая проблема. Я использую зависимости Maven для настройки внешних библиотек.

Проблема была решена путем переключения с нового репозитория maven для Java Mail Api на старый репозиторий Maven

Новый репозиторий (возникает исключение): javax.mail javax.mail-api 1.5.5

Старый репозиторий (работает нормально): javax.mail mail 1.4

Я понятия не имею, почему использование старого репозитория работает, а использование нового - нет. Было бы здорово, если бы кто-то разъяснил это.

Другие вопросы по тегам