Ich habe gestern eine GUI programmiert, in der ein Benutzer verschiedene Daten in Textfelder eintragen kann und diese dann via eMail an mich versendet werden. Die eMail wird von eine GMail.com eMail versendet - Benutzername und Passwort stimmen im Code.
Das Problem ist, dass das Programm (auch die Executable JAR) bei mir einwandfrei funktioniert. Aber anscheinend nur wenn die JAR-Datei im Projektverzeichnis ist.
Ich habe die Mail-Klasse extra gemacht und eine Referenz im MainFrame erzeugt. Wenn ich die JAR auf einem anderen PC Aufrufe, dann funktioniert alles einwandfrei, bis auf das versenden der Mail zum Schluss. Was könnte mein Fehler sein.
Also, wenn die Jar, bzw. auch die exe (mit Launch4j erstellt) außerhalb des Ordners liegt funktioniert alles einwandfrei, bis auf das Senden der eMail. Also Frame geht auf, Daten eintragen absenden, aber das Finished und die Mail kommen nicht.
C:\Users\MoE>java -jar BO2InjectorAPI.jar
Exception in thread "AWT-EventQueue-0" java.lang.NoClassDefFoundError: javax/mail/Address
at bo2.MainJFrame.jButtonSendHackActionPerformed(MainJFrame.java:338)
at bo2.MainJFrame.access$200(MainJFrame.java:16)
at bo2.MainJFrame$3.actionPerformed(MainJFrame.java:216)
at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
at java.awt.Component.processMouseEvent(Unknown Source)
at javax.swing.JComponent.processMouseEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)
Caused by: java.lang.ClassNotFoundException: javax.mail.Address
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
... 28 more
Das kommt raus. Kann es sein, dass ich die Library (also die mail.jar --> mit Add JAR/Folder...) ins Projekt eingebunden, auch irgendwie in die Executable JAR vom ganzen Programm bringen muss.
Du musst die Mail API ins Projekt einbinden. Das geht in Eclipse mit Rechtsklick aufs Projekt --> Build Path --> Add External Archives und dann deine API auswählen.
Nachdem du die .jar generiert hast, sollte die Library dann auch im Manifest stehen und somit auch darauf zugegriffen werden können.
Ähnlich in NetBeans muss man Rechtsklick auf das Projekt --> Properties --> Librarys --> Dann bin ich mir nicht mehr sicher entweder Compile, Processor oder Run ich tippe aber auf Processor. Einfach mal testen oder du schaust halt nochmal bissl in Google, da steht sicherlich was dabei.