Работа в eclipse, а не в командной строке ясно говорит о том, что в проекте присутствует несколько версий почтовых jar.
Пример:
У вас есть 3 банки, Jar X, Jar Y и Jar Z.
Если вы не знаете, что JAR X может быть уже включен в JAR Z (в данном случае почтовый jar, но в другой версии.
Так в чем же проблема наличия нескольких версий одной и той же банки?
У вас есть две разные версии, и вы не будете знать, на какую ссылку будет ссылаться ваш проект. (поэтому, если вы ищете в своем проекте какой-то класс из mail-2.jar, вы получите исключение «класс не найден», если ссылка на mail-1.jar сделана загрузчиком классов)
Так как же это работает должным образом на Eclipse?
В eclipse вы можете видеть, что есть опция для библиотеки ORDER, они будут ссылаться в том же порядке, но во время работы в командной строке мы использовали загрузку как lib / *, которая загружает все для сбора, и мы не будем знать, какая библиотека будет загружен первым.
Как определить виновника и устранить проблему?
Вариант 1:
См. Страницу документации / руководство пользователя используемых вами библиотек, чтобы увидеть, что в них есть.
Вариант 2:
- В затмении переместите рассматриваемый JAR (здесь mail.jar) в TOP в порядке пути к классам. (ваша программа должна работать сейчас)
Теперь уменьшите ордер по очереди, чтобы увидеть, где вы получили ошибку. (если вы хотите найти банку, которая вызывает эту проблему, дублируйте ссылку)
Извлеките банку с ссылкой на дубликаты, удалите дубликат внутри банки и перепакуйте его. (если требуется)