Файл Jar с внешними банками Выполняется, а затем не выполняется

#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. Ага! Я понимаю. Спасибо!