Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
ich habe mal wieder ein Problem mit einer jar-Datei. Und zwar habe ich eine Jar-Datei, die E-Mails verschickt. Auf meinem alten Rechner funktioniert diese Jar-Datei auch wunderbar. Wenn ich diese Datei allerdings jetzt auf meinem neuen Rechner ausführe, kommt folgender Fehler:
Java:
H:\>java -jar D:\Mail2.jar
Exception in thread "main" java.lang.NoClassDefFoundError: javax/mail/Address
at src.SendMailWithAtt.addFileToJarSendJarAndDeleteTempFiles(SendMailWithAtt.java:20)
at src.starteMail.main(starteMail.java:12)
Was könnte das für ein Problem sein? Ich bin etwas verwirrt, da es ja auf meinem alten Rechner ohne Probleme läuft :-/
So, habe noch ein paar Zusatzinfos: Habe mir jetzt mal das zur jar-Datei passende Java-Projekt auf meinem neuen Rechner ins Eclipse geholt und von dort ausgeführt. Ergebnis: Funktioniert ohne Fehler. Dann habe ich das Projekt exportiert, und wieder über die Konsole ausführen lassen. Ergebnis: gleicher Fehler wie oben... :-/
So, ich hoffe jetzt mal ich blamiere mich nicht und erzähle quatsch, aber ich hab die doch dem Classpath geadded, oder?
Ich habe alle nötigen Jars dem Projekt hinzugefügt, in meinem Projekt sieht es so aus:
(siehe Anhang)
Die Google-Seiten hatte ich auch gefunden, aber irgendwie scheine ich zu honkig zu sein, um da Hilfe zu finden :-/
Okay, das stimmt natürlich, aber ich dachte, das würde beim Export irgendwie geregelt, dass das alles Wichtige mit kommt.
Habe jetzt nochmal folgendes gemacht, aber klappt immer noch nicht:
Java:
H:\>set CLASSPATH=%CLASSPATH%;D:\Mailversand.jar
H:\>java -jar D:\Mailversand.jar
Exception in thread "main" java.lang.NoClassDefFoundError: javax/mail/Address
at src.SendMailWithAtt.addFileToJarSendJarAndDeleteTempFiles(SendMailWithAtt.java:20)
at src.starteMail.main(starteMail.java:12)
Okay,
nur was ich jetzt nicht verstehe ist, dass die jar-Dateien in meinem erzeugten Jar-File drin sind, dann hätte ich gedacht, dass der automatisch auf diese Jars zugreift.
...
Okay,
nur was ich jetzt nicht verstehe ist, dass die jar-Dateien in meinem erzeugten Jar-File drin sind ... dann hätte ich gedacht, dass der automatisch auf diese Jars zugreift.
JARs in JARs funktionieren nicht. Du müsstest die JARs entpacken und die class-Files mitsamt packages in dein JAR stecken (hierzu gibt es bspw. das Eclipse-Plugin FatJAR).
Das ist aber ganz schlechter Stil und nur in absoluten Ausnahmefällen sinnvoll, weil:
1.) Deine JAR wird total fett. Schon mal eine halbwegs professionelle Anwendung gesehen, die genau aus einer einzigen Datei besteht?
2.) Nicht jede JAR darfst du einfach so mitverpacken - aus lizenztechnischen Gründen
3.) Was passiert, wenn du deine Anwendung mal updaten musst? Dann müsstest du das ganze fette JAR neu ausliefern.
4.) ...
Kennst du so viele Programme, die noch korrekt funktionieren, wenn man einfach den Installationspfad ändert oder noch besser einfach irgendwelche Installationsdateien in andere Verzeichnisse verschiebt?
Okay, ich werde jetzt mal alles versuchen, was du erwähnt hast. Die Jars liegen in meinem Projektordner, deshalb dachte ich, ich könnte sie so ansprechen.
Was ich nur bis jetzt immer noch nicht verstehe: Wieso funktioniert das auf meinem alten Rechner mit dem Jar-Erstellen, und auf dem neuen nicht? Das ist das, was mich mal so richtig verwirrt.... :bahnhof:
Was ich nur bis jetzt immer noch nicht verstehe: Wieso funktioniert das auf meinem alten Rechner mit dem Jar-Erstellen, und auf dem neuen nicht? Das ist das, was mich mal so richtig verwirrt.... :bahnhof:
Jaaaa, super. Der Hinweis mit dem Java-Install-Verzeichnis war Gold wert.
Auf dem anderen Rechner liegen die Jars nämlich dort... Habe jetzt einfach auf dem neuen Rechner die Jars auch dorthin kopiert und "Tadaaa": Es klappt. Vielen, vielen Dank für die Hilfe.
Hi,
sorry, dass ich mich erst jetzt wieder melde - nicht dass ihr denkt "Schön, der hat jetzt seine Lösung und verpisst sich...".
Stimmt, mit euren Beiträgen habt ihr natürlich recht. Ich werde mich auch jetzt noch damit befassen, die jar so zu erstellen, dass man die jars nicht mit rüber kopieren muss. Es ging sich mir vor allem erst einmal darum, die Jar wieder ans laufen zu bekommen - egal wie. Und wo das jetzt passiert ist, werde ich mich um die feinere Lösung kümmern.