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.
Das JAR lässt sich ausführen, sofern es nicht von seiner erstellten Position abweicht. D.h. wenn ich das JAR z.B. auf den Desktop ziehe und es dort öffnen möchte, passiert nichts. Lasse ich es im Stammbaumverzeichnis (Netbeans), dann lässt sich es ausführen.
Hat da jemand Rat?
Jar ist im Prinzip ein Container, Du kannst es also öffnen und nachschauen, was drin enthalten ist. In Deinem Fall klingt es so, als würdest Du nicht alle notwendigen Dateien für die Ausführung des Programms bei Erstellen mit Kopieren.
Ist eine Frage der Einstellungen, hab ich bisher nur in Eclipse gemacht, sollte aber in Netbeans ähnlich sein.
Ja habe mit Winrar nachgeschaut, sollte alles drin sein.
Kannst du mal nen Screen machen, wie bei dir das Innenleben eines JAR aussieht? So kann ich die Differenz feststellen und entsprechend dem Problem evtl. auf den Grund gehen.
Lässt sich das jar auch dann nicht ausführen, wenn Du es in NetBeans über Build erstellt hast und dann die jar dem Ordner "dist" (in Deinem Projekt) genommen hast?
Genau das funktioniert eben bei mir nicht. Wenn ich es direkt im Ordner dist starte, geht es, aber wenn ich es rausziehe und z.B. auf dem Desktop lege, öffnet er irgendwas (vermutlich JVM) und das wars. Ich sehe meine GUI nicht.
@Lerando, mail, swing, awt, io
Ja eigentlich schon, bin auch relativ ratlos.
@irgendjemand das habe ich bereits getestet und ist nichts auf fälliges gewesen...
Wie meinst du Grundlagen? OOP Konzepte sind mir durchaus bekannt (Vererbung, Polymorphie, Datenkapselung, Multithreading, Serialisierung und Deserialisierung usw...)
Sicherlich bin ich nicht in der Lage irgendwelche JSP & Servlets über Tomcat zu testen...obwohl Netbeans besitzt ja sowas von Haus aus schon...
@topic, habe noch immer keinen Rat... Muss doch irgendwie gehen.
naja ... nur das es nicht geht OHNE das ne fehlermeldung fliegt kann ich mir nicht vorstellen ...
auch hier wieder : DEBUG
vor allem solltest du sowas vermeiden
Java:
catch(Throwable t) { }
in einen catch-block gehört IMMER mindest ein Throwable.printStackTrace() ...
auch an wichtigen stellen wo z.b. resourcen geladen werden einfach mal ein paar sysouts um zu sehen ob nicht irgendwas null ist ...
Sieht es geht um nen Filewriter, dessen Methode ich in einem Try/Catch Block untergebracht habe.
Ansonsten habe ich noch einen catch Block mit einer normalen (Exception ex)... Ausgabe.
Die restlichen Try/Catches sind nicht vorhanden, ich vermute, dass es an Netbeans selber liegt. Ich habe mehrere Projekte offen und irgendwie kommt er vielleicht durcheinander.
Aber bin für jeden weiteren nützlichen Ratschlag offen
btw: Lässt sich meine java konsole nicht mehr öffnen, auch das icon wird mir in der windows taskleiste nicht mehr angezeigt, obwohl ich explizit in den Systemsteuerung "auf immer anzeigen" geklickt habe.?
Es liegt hier doch eigentlich auf der Hand, dass irgedwelche Resourcen nicht gefunden werden (obwohl es da ja woh einen StackTrace geben muss), die sich relativ zum Pfad der .jar befinden. Evtl durch die Methode von irgendjemand erreicht:
wie gesagt : wenn die daten innerhalb des jar liegen MUSST du getResource() nutzen ... da du hier kein File objekt erzeugen kannst ...
wenn die daten NICHT im jar liegen sondern im normalen filesystem kannst du auch mit File arbeiten ...
um ein File-objekt auf die aktuelle klasse *bzw das jar* zu bekommen kannst du diese zeile verwenden
mit diese zeile bekommst du zuverlässig ein File objekt zur aktuellen code-source ...
wenn du nur eine normale klasse hast zeit "me" dann auf den ordner in dem diese klasse liegt
wenn du ein JAR hast zeigt "me" direkt auf das jar
falls dann vom jar aus noch das verzeichnis gewünscht ist geht das mit
Somit wäre es imho sinnvoll wenn du mal ein paar Screenshots von der Umgebung (Explorer) deiner .jar machts, bzw. selbst mal ganau suchts. Evtl. sogar so:
- Sicherungskopie des gesamten NetBeans Projekt machen
- Nach und nach einzelne Dateien und Ordner löschen
- .jar immer wieder testen, ob noch funktionsfähig
Falls dann irgendwann nicht mehr der Fall --> Ursache höchstwahrscheinlich die letzte entfernte Datei
start -> ausführen -> cmd.exe -> ins verzeichnis des jar wechseln -> java -jar name.jar ... wo ist da das problem ?
das sind BASICS ... die man wirklich können sollte
Exception in thread "AWT-EventQueue-0" java.lang.NoClassDefFoundError: javax/
l/Address
at de.blizzard.battlegen.ui.BattleGen_GUI.<init>(BattleGen_GUI.java:2
at de.blizzard.battlegen.ui.BattleGen_GUI$4.run(BattleGen_GUI.java:21
at java.awt.event.InvocationEvent.dispatch(Unknown Source)
at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at java.awt.EventQueue.access$000(Unknown Source)
at java.awt.EventQueue$1.run(Unknown Source)
at java.awt.EventQueue$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$1.doIntersectionPrivilege(Unkno
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)
... 16 more
Stimmen die Pfade offenbar doch nicht... Wie kann ich nun das Problem lösen?
Scheinbar funktioniert dir .jar nur wenn sie im selben Verzeichniss liegt, indem auch der lib Ordner liegt, indessen Ordnung sich die Mail Bibliothek befindet.
Kann das der Grund sein?
Genau das meinte ich mit meinem Eintrag. Es reicht nicht, wenn Du nur "Deine" Klassen in das jar-file packst, sondern wenn bestimmte Bibliotheken etc. benutzt werden, dann müssen die auch rein. Woher soll er die sonst kennen?
es gibt im manifest auch einen eintrag für den classpath ... eigentlich sollte netbeans diesen entsprechend setzen ...
zur not einfach mail.jar in den globalen classpath aufnehmen
wie ich bereits oben sagte : es reicht wenn du nur "mail.jar" hast ... denn dort is ALLES drin ... die anderen teil-jar sind halt dafür gedacht wenn man nur etwas betreffend des protocols braucht ....
-.-'
ja ... weil du vermutlich nur im LIB-ordner warst ... dann musst du natürlich alle jars verwenden ... aber wenn du dir das zip ziehst : JavaMail API dann hast du direkt auf oberster ebene ein "mail.jar" ... und da ist ALLES drin ...