java.lang.NoClassDefFoundError: javax/mail/MessagingException (с использованием втулки/Bukkit) (Eclipse)

Я пытаюсь реализовать отправку простого электронного письма с помощью JavaMail в spigot 1.8.3 с использованием eclipse.

Я пытался искать в Интернете в течение двух дней, я пробовал каждый результат Google, который появился.

Я создал класс для отправки электронной почты, но когда вызывается метод отправки, я получаю следующую трассировку стека:

[16:07:44] [Server thread/ERROR]: Error occurred while enabling
ServerManager v1.0 (Is it up to date?)
java.lang.NoClassDefFoundError: javax/mail/MessagingException
at net.mcviral.dev.plugins.servermanager.util.Email.send(Email.java:61) ~[?:?]
at net.mcviral.dev.plugins.servermanager.main.ServerManager.onEnable(ServerManager.java:43) ~[?:?]
at org.bukkit.plugin.java.JavaPlugin.setEnabled(JavaPlugin.java:321) ~[spigot_server.jar:git-Spigot-c3c767f-33d5de3]
at org.bukkit.plugin.java.JavaPluginLoader.enablePlugin(JavaPluginLoader.java:335) [spigot_server.jar:git-Spigot-c3c767f-33d5de3]
at org.bukkit.plugin.SimplePluginManager.enablePlugin(SimplePluginManager.java:405) [spigot_server.jar:git-Spigot-c3c767f-33d5de3]
at org.bukkit.craftbukkit.v1_8_R1.CraftServer.loadPlugin(CraftServer.java:356) [spigot_server.jar:git-Spigot-c3c767f-33d5de3]
at org.bukkit.craftbukkit.v1_8_R1.CraftServer.enablePlugins(CraftServer.java:316) [spigot_server.jar:git-Spigot-c3c767f-33d5de3]
at net.minecraft.server.v1_8_R1.MinecraftServer.q(MinecraftServer.java:402) [spigot_server.jar:git-Spigot-c3c767f-33d5de3]
at net.minecraft.server.v1_8_R1.MinecraftServer.k(MinecraftServer.java:370) [spigot_server.jar:git-Spigot-c3c767f-33d5de3]
at net.minecraft.server.v1_8_R1.MinecraftServer.a(MinecraftServer.java:325) [spigot_server.jar:git-Spigot-c3c767f-33d5de3]
at net.minecraft.server.v1_8_R1.DedicatedServer.init(DedicatedServer.java:211) [spigot_server.jar:git-Spigot-c3c767f-33d5de3]
at net.minecraft.server.v1_8_R1.MinecraftServer.run(MinecraftServer.java:505) [spigot_server.jar:git-Spigot-c3c767f-33d5de3]
at java.lang.Thread.run(Unknown Source) [?:1.8.0_25]
Caused by: java.lang.ClassNotFoundException: javax.mail.MessagingException
at java.net.URLClassLoader$1.run(Unknown Source) ~[?:1.8.0_25]
at java.net.URLClassLoader$1.run(Unknown Source) ~[?:1.8.0_25]
at java.security.AccessController.doPrivileged(Native Method) ~[?:1.8.0_25]
at java.net.URLClassLoader.findClass(Unknown Source) ~[?:1.8.0_25]
at org.bukkit.plugin.java.PluginClassLoader.findClass(PluginClassLoader.java:101) ~[spigot_server.jar:git-Spigot-c3c767f-33d5de3]
at org.bukkit.plugin.java.PluginClassLoader.findClass(PluginClassLoader.java:86) ~[spigot_server.jar:git-Spigot-c3c767f-33d5de3]
at java.lang.ClassLoader.loadClass(Unknown Source) ~[?:1.8.0_25]
at java.lang.ClassLoader.loadClass(Unknown Source) ~[?:1.8.0_25]
... 13 more

Я ссылался на mail.jar и активацию.jar из JavaMail как на внешние банки.

Класс, который я использую для отправки электронной почты, называется «Email.java».

Основной класс моего плагина - "ServerManager.java"

Мой основной класс 'onEnable() метод

Моя электронная почта класс

Я пробовал несколько способов сделать это, я пытался создать папку «lib» и поместить туда mail.jar и активацию.jar, а затем добавить их в путь сборки, я попытался отредактировать файл manifest.mf чтобы включить их, но ничего на любом сайте, который я могу найти, кажется, не работает, у всех есть ответы, в которых говорится, что это исправлено для них, но они просто не работают для меня, несколько из них сказали о редактировании вашего пути к классам, я пытался сделать это тоже, но я не уверен, что понял, как это сделать.

Просто чтобы уточнить, у меня нет ошибок в eclipse, только когда я запускаю сервер spigot, я получаю ошибку class not found.

Спасибо за любую помощь заранее.

РЕДАКТИРОВАТЬ:

Мой файл манифеста:

Manifest-Version: 1.0
Class-Path: E:\Main Doccuments\Programming\Java/mail.jar;E:\Main Doccuments\Programming\Java/activation.jar

Не решенный, но лучший ответ


person comdude2    schedule 23.03.2015    source источник
comment
Можете ли вы подробно объяснить, как вы проверили часть манифеста. Можете ли вы распаковать банку и проверить манифест, в котором есть путь к классу отсутствующего класса?   -  person StackFlowed    schedule 23.03.2015
comment
Я уже говорил, что он добавлен в мой путь сборки.   -  person comdude2    schedule 23.03.2015
comment
Это не файл манифеста. Пожалуйста, обновите вопрос, а не как комментарий здесь.   -  person StackFlowed    schedule 23.03.2015
comment
Как вы строите свой проект? Это Мавен?   -  person StackFlowed    schedule 23.03.2015
comment
Щелкните правой кнопкой мыши проект › Экспорт › Jar › Имя + конец, я совершенно новичок во всем пути к классам/манифесту, я понятия не имею, что я с ним делаю РЕДАКТИРОВАТЬ: в вопросе говорится, что это затмение   -  person comdude2    schedule 23.03.2015
comment
Вы пытались сохранить свою банку на серверной библиотеке?   -  person Om.    schedule 23.03.2015
comment
Какие? Я не понимаю.   -  person comdude2    schedule 23.03.2015


Ответы (1)


1) Вы использовали следующие 2 баночки?

  • mail.jar
  • активация.jar

2) Попробуйте переключиться на последние банки, если проблема не устранена.

3) Убедитесь, что jar доступны в пути к классам и нет конфликтов версий.

4) Попробуйте обновить версию Java до 1.6+, если используете более ранние версии.

5) Добавьте банки в папку WEB-INF/lib. Добавьте банки в Путь сборки Java > Библиотеки.

6) И последнее, но не менее важное: если вышеуказанное решение не работает, попробуйте поместить файл jar в папку lib вашего сервера и проверить.

person Om.    schedule 23.03.2015
comment
Я использую java 1.8, и, как я уже сказал, обе банки находятся в моем пути сборки проекта и проекта. - person comdude2; 23.03.2015
comment
Я подозреваю проблему с файлом манифеста/который отличается от остальной части URL-адреса E:\Main Doccuments\Programming\Java/mail.jar;E:\Main Doccuments\Programming\Java/activation.jar. Также путь к классу не должен быть чем-то вроде Class -Путь: abc.jar def.jar - person Om.; 23.03.2015
comment
Поменял на обратную косую черту, не помогло. - person comdude2; 23.03.2015
comment
У меня такое чувство, что вы не добавили банку в свою библиотеку проекта или не включили ее в путь к классу должным образом. Не могли бы вы сделать скриншот вашей библиотеки eclipse java build-path ›? - person Om.; 23.03.2015
comment
Путь сборки: prntscr.com/6keodj - person comdude2; 23.03.2015
comment
Как я уже говорил, какая папка server/lib, а также что вы имеете в виду под папкой WEB-INF, как я уже сказал, я совершенно новичок в вещах classpath, спасибо, что продолжаете мне помогать. - person comdude2; 23.03.2015
comment
Попробуйте выполнить шаг 5) из моего ответа, скопировав банку внутри библиотеки проекта и добавив ее в путь к классу. - person Om.; 23.03.2015
comment
Как я уже сказал (устал говорить это), я не знаю, что такое папка WEB-INF, а банки НАХОДЯТСЯ в библиотеках, как я показал вам на скриншоте. - person comdude2; 23.03.2015
comment
У вас есть папка lib в вашем проекте? Вы также можете поделиться своей структурой папок? - person Om.; 23.03.2015
comment
Нет: prntscr.com/6kew8y - person comdude2; 23.03.2015