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