#java #jar #compilation #libraries
Вопрос:
У меня есть куча файлов, на которые полагаются three external JARs
(два для отправки по электронной почте [активация и javax.mail] и один для SQL). Я могу скомпилировать его нормально, я могу упаковать его в JAR
файл нормально, я тестирую JAR
его, отправив тестовое электронное письмо на свой адрес электронной почты, он отлично работает, ура отлично! Затем, 10-15 секунд спустя, я пытаюсь открыть то же JAR
самое , и пуф, электронное письмо не отправляется, и я получаю ClassNotFound
исключение. Я понятия не имею, почему это происходит. Я использую IntelliJ в качестве своей среды разработки, и я не могу заставить эту JAR-maker
штуку работать, поэтому я использую команды терминала. Вот что я сделал в качестве команд терминала: (Я тестировал другие с тем же результатом)
Составление:
javac -classpath .:/lib/connector.jar:lib/activation.jar:lib/mail.jar -d .
MainPackage/EmailHelper/Emailer.java MainPackage/LoginAndSignup/MainLoginOrSignup.java
MainPackage/LoginAndSignup/Login/Login.java MainPackage/LoginAndSignup/Signup/Signup.java
MainPackage/LoginAndSignup/AccountDetails/AccountInfo.java MainPackage/Main/Main.java
Упаковка в банки:
jar -cvmf META-INF/MANIFEST.MF CM.jar lib/connector.jar EmailHelper/lib/activation.jar
EmailHelper/lib/javax.mail.jar MainPackage/EmailHelper/Emailer.class
MainPackage/LoginAndSignup/MainLoginOrSignup.class
MainPackage/LoginAndSignup/Login/Login.class MainPackage/LoginAndSignup/Signup/Signup.class
MainPackage/LoginAndSignup/AccountDetails/AccountInfo.class MainPackage/Main/Main.class
Несколько примечаний: я просмотрел декомпилированный Java
код через Jar
файл, и все файлы классов и внешние JARs
все там. Это так, как я его скомпилировал?
Проблема: Когда я компилирую и упаковываю свой проект, я тестирую его, он отлично работает, ура! Затем, 10-15 секунд спустя, я снова тестирую его и получаю ClassNotFound
сообщение об ошибке. Я написал команды терминала, которые я использую, если это поможет.
Заранее спасибо.
Файл манифеста:
Manifest-Version: 1.0
Class-Path: lib/connector.jar lib/activation.jar lib/mail.jar
Main-Class: MainPackage.Main.Main
Комментарии:
1. Привет, у меня уже есть каталог библиотеки со всеми моими банками и записью пути к классу в манифесте, я просто не знаю, почему это работает, пуф, это не так. Спасибо
2. Я добавил
manifest
файл в исходное сообщение. СодержимоеJAR
файла не зависит ни от чего, что находится за его пределами, хотя это может произойти, потому что я не уверен, есть ли у моего внешнегоJARs
компьютера что-либо на компьютере пользователя. Я не думаю, что имеет значение, где запускается приложение, потому что все необходимое находится внутриJAR
файла.3. Ага! Я понимаю. Спасибо!