MouseListener funktioniert in jar-file nicht mehr

Marco7757

Aktives Mitglied
Ich habe folgenden MouseListener auf einem Button:

Java:
button.addMouseListener(new MouseAdapter() {
				@Override
				public void mouseClicked(MouseEvent arg0) {
					if(wrtf.WriteToFile(points, tf.getText())==true) {
						label.setText("<html>Ihr Rekord wurde erfolgreich eingetragen.<br />Drücken Sie auf den Button um ein neues Spiel zu beginnen!</html>");
						form.setVisible(false);
					} else {
						label.setText("<html>Leider konnte Ihr Rekord nicht eingetragen werden.<br />Drücken Sie auf den Button um ein neues Spiel zu beginnen!</html>");
						form.setVisible(false);
					}
				}
			});

Das Komische ist jetzt aber, dass er zwar in Eclipse funktioniert, aber sobald ich das Projekt als runnable jar-file exportiere, reagiert der Button nicht mehr auf einen Klick. Wieso das?
 

eRaaaa

Top Contributor
Was bedeutet er reagiert nicht mehr? Hast du mal testweise nach Zeile 3 was anderes aufgerufen? Liegt ja vllt eher an
Code:
wrtf.WriteToFile
? Besser wäre allgemein eig. einen ActionListener anstelle eines MouseListeners auf einem Button anzumelden...
 

Marco7757

Aktives Mitglied
Wieso ist ein ActionListener besser auf einem Button?

Also, ich habs getestet, der Fehler liegt tatsächlich in der aufgerufenen Funktion. Allerdings kann ich ihn mir nicht erklären ... denn in Eclipse funktioniert es ja.

Der Fehler:
Java:
try {
				 JOptionPane.showMessageDialog(new JPanel(),
						    "hierher",
						    "Fehler!",
						    JOptionPane.WARNING_MESSAGE);
				File f = urlToFile(url);
				FileOutputStream schreibeStrom = new FileOutputStream(f);
			   for (int i=0;i<writeString.length();i++){
			     schreibeStrom.write((byte)writeString.charAt(i));
			   }
			   schreibeStrom.close();
			   success = true;
		    } catch (IOException e) {
		    	success = false;
		    }

Wenn ich mir das "hierher" der OptionPane nur einen Befehl später ausgeben lassen will, Funktioniert es nicht mehr. D.h. der Fehler liegt irgendwo unter der OptionPane. Allerdings kann ich ihn nicht sehen ...

Die Methode urlToFile() habe ich aus dem Internet. Die sieht so aus:
Java:
public File urlToFile(URL url) {
        URI uri;
        try {
            // this is the step that can fail, and so
            // it should be this step that should be fixed
            uri = url.toURI();
        } catch (URISyntaxException e) {
            // OK if we are here, then obviously the URL did
            // not comply with RFC 2396. This can only
            // happen if we have illegal unescaped characters.
            // If we have one unescaped character, then
            // the only automated fix we can apply, is to assume
            // all characters are unescaped.
            // If we want to construct a URI from unescaped
            // characters, then we have to use the component
            // constructors:
            try {
                uri = new URI(url.getProtocol(), url.getUserInfo(), url
                        .getHost(), url.getPort(), url.getPath(), url
                        .getQuery(), url.getRef());
            } catch (URISyntaxException e1) {
                // The URL is broken beyond automatic repair
                throw new IllegalArgumentException("broken URL: " + url);
            }
        }
        return new File(uri);
    }
 
S

SlaterB

Gast
du erstellst ein Jar, packst also dein ganzes Projekt in eine Art Zip-Datei,
so dass z.B. keine Unterverzeichnisse mehr im Dateisystem vorhanden sind
und dass dann irgendwas mit URL, File, Festplatte nicht mehr funktioniert macht dich überhaupt nicht stutzig?
 

eRaaaa

Top Contributor
Wieso ist ein ActionListener besser auf einem Button?

Was ist wenn ich keine Maus habe, ich durch Tab zum Button gelange und den mit der Tastatur drücken möchte? Usw....

Wenn du dir mal in
Java:
} catch (IOException e) {
                success = false;
            }
den Fehler anschauen würdest, anstelle da einfach irgendwas false zu setzen, würde dich das wahrscheinlich sehr viel weiter bringen!
 
Zuletzt bearbeitet:

Marco7757

Aktives Mitglied
Java:
} catch (IOException e) {
JOptionPane.showMessageDialog(new JPanel(),
						    e,
						    "Fehler!",
						    JOptionPane.WARNING_MESSAGE);
                success = false;
            }

So wird leider nichts ausgegeben ...

du erstellst ein Jar, packst also dein ganzes Projekt in eine Art Zip-Datei,
so dass z.B. keine Unterverzeichnisse mehr im Dateisystem vorhanden sind
und dass dann irgendwas mit URL, File, Festplatte nicht mehr funktioniert macht dich überhaupt nicht stutzig?

Ich hatte grosse Mühe, die Datei überhaupt irgendwie zu erreichen. Wenn ich es ohne URL versucht hatte, dann wurde die Datei vom System überhaupt nicht gefunden ... Selbst wenn sie im gleichen Verzeichnis lag und ich einfach ihren Namen eingab, sie wurde nicht gefunden. Ich komme einfach mit diesen Dateien nicht klar!!!
 
S

SlaterB

Gast
schreibe bitte
e.printStackTrace();
in das catch, die Konsolenausgabe siehst du doch hoffentlich?

was du mit Dateien so alles machst, ist für andere bisher unklar, da müsstest du mehr erklären,
aus meiner Sicht ist jedenfalls die urlToFile()-Methode völlig überflüssig für Dateien, wo kommt denn die url her?

wichtige Code-Zeilen sind dazu:

File f = new File(..);
System.out.println(f.getAbsolutePath());
System.out.println(f.exists());
 

Marco7757

Aktives Mitglied
Das Problem ist ja eben, dass ich beim Ausführen als jar-Datei in einem Fenster KEINE Konsole habe und keine Fehler sehe. In Eclipse funktioniert alles.

Die URL wird so erzeugt und dann an die Klasse geliefert:
Java:
public final static WriteRecordsToFileGUI wrtfGUI = new WriteRecordsToFileGUI(tetris.getClass().getResource("records.txt"));

Ich will einen neuen Rekord (Spiel) in die Datei schreiben.

Ich mache es nur so kompliziert, weil es so (folgender Code) nicht funktioniert, da die Datei nie gefunden wird ...
Java:
 //Quelle: Java-Insel
fw = new FileWriter( "fileWriter.txt" ); 
fw.write( "Zwei Jäger treffen sich..." );
 
S

SlaterB

Gast
naja, solange kein ordentliche Konsole mit Debugging usw. steht, musst du über alle anderen Probleme gar nicht nachdenken ;)
wie du mit Dateien umgehen kannst habe ich schon geschrieben (AbsolutePath) bzw. nach Lehrbuch, neuer FileStream usw.,

jede Fehlermeldung auch anschauen, nicht nur andere fragen, die wissen auch nicht mehr
Java:
public class Test {
	public static void main(String[] args) throws Exception {
		showException(new Exception());
	}
	public static void showException(Exception e) {
		StringWriter st = new StringWriter();
		PrintWriter p = new PrintWriter(st);
		e.printStackTrace(p);
		p.close();
		JOptionPane.showMessageDialog(null, st.toString());
	}
}
 

Marco7757

Aktives Mitglied
Ach, ich gebe diese komplizierte Variante auf.

Ich verstehe einfach nicht, warum folgendes nicht funktioniert:
Java:
try {
				  FileWriter fw = new FileWriter("records.txt"); 
				 fw.write("schreiben");
			   fw.close();
			   success = true;
		    } catch (IOException e) {
		    	System.err.println("Error :"+e);
		    	success = false;
		    }

Weder eine Fehlermeldung in der Konsole, noch geschieht sonst was ... was läuft da falsch?


EDIT: Problem gelöst:
Da ich den Pfad nicht wusste, habe ich nun einfach das Programm selbst die Datei erstellen lassen. So weiss das Programm selbst auch, wo diese Datei ist. Danke für die Geduld und Hilfe!
 
Zuletzt bearbeitet:

jeppi

Mitglied
Wird der Code überhaupt erreicht und bearbeitet? Hört sich nicht so an.
Schieb mal eine kleine Konsolen-Ausgabe rein, so nach dem Motto:

Java:
 // DEBUG
 System.out.println("Erstelle Datei records.txt");
 FileWriter fw = new FileWriter("records.txt"); 
 fw.write("schreiben");
 fw.close();

Wenn der Hinweis in der Konsole nicht erscheint (ich gehe hier mal davon aus, dass Du die Systemausgabe nicht umgebogen hast) , dürfte das Problem ganz woanders liegen als in diesen Zeilen. :autsch:

EDIT: Markier doch den Thread auch mal als erledigt... :oops:

EDIT 2: Mir wäre das nicht geheuer, wenn ich nicht wüsste, wo die bearbeiteten Dateien eigentlich landen... dabei hat SlaterB Dir eigentlich nen prima Tipp gegeben... Es zahlt sich nicht aus, das jetzt quick&dirty zu beheben, statt das Problem zu verstehen... ist immer dumm, wenn man seinen eigenen code nicht versteht ;-(
 
Zuletzt bearbeitet:

Marco7757

Aktives Mitglied
Also ide Datei wird nun ausserhalb der jar-Datei erstellt. Das ist eigentlich gar nicht so schlecht. Ich weiss wo sie ist. Ist es überhauot möglich, diese Datei IN der jar-Datei zu haben? Wenn ja, wie wäre dann der Pfad? file.jar/records.txt ... wohl eher nicht, oder?
 

Michael...

Top Contributor
Da Du zur Laufzeit in die Datei schreibst, ist das jar-Archiv der falsche Platz. Das Archiv wird ja zur Laufzeit verwendet und ist somit schreibgeschützt.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
R Variablen MouseListener funktioniert auf anderen Pcs nur bedingt Java Basics - Anfänger-Themen 6
G MouseListener funktioniert nicht wie geplant Java Basics - Anfänger-Themen 4
D MouseListener funktioniert nach Timerstart nicht mehr Java Basics - Anfänger-Themen 9
P MouseListener funktioniert nicht Java Basics - Anfänger-Themen 6
M MouseListener funktioniert nicht Java Basics - Anfänger-Themen 9
P JFrame, Linien zeichnen, MouseListener Java Basics - Anfänger-Themen 2
H MouseListener klicks begrenzen Java Basics - Anfänger-Themen 4
H MouseListener begrenzen und Speichern Java Basics - Anfänger-Themen 1
V Problem - MouseListener/2DGraphics Java Basics - Anfänger-Themen 2
GRAZZ0R MouseListener - Rechteck Bewegen Java Basics - Anfänger-Themen 1
R Variable Klassenübegreifend MouseListener Java Basics - Anfänger-Themen 0
J MouseListener für Schleifen-Objekte Java Basics - Anfänger-Themen 13
S vom JPanel aus durch Mouselistener Internet aufrufen Java Basics - Anfänger-Themen 6
S GUI ImageIcon Mouselistener Link Java Basics - Anfänger-Themen 0
J KeyListener,MouseListener,MouseMotionListener und static Java Basics - Anfänger-Themen 7
P Problem mit MouseListener Java Basics - Anfänger-Themen 4
T MouseListener, recht Taste Java Basics - Anfänger-Themen 2
E Mouselistener auf jTable Java Basics - Anfänger-Themen 18
B Variablen an MouseListener übergeben Java Basics - Anfänger-Themen 5
H MouseListener für ein eingefügtes Bild in einem JFrame Java Basics - Anfänger-Themen 7
H Mouselistener bei JTable Java Basics - Anfänger-Themen 4
G MouseListener für mehrere Buttons Java Basics - Anfänger-Themen 11
J MouseListener fuer gezeichnete Polyline Java Basics - Anfänger-Themen 3
L Label + MouseListener Java Basics - Anfänger-Themen 12
M MouseListener funkioniert auf JPanel nicht Java Basics - Anfänger-Themen 8
P Jtree MouseListener und NoCollapse Java Basics - Anfänger-Themen 2
M Schiebepuzzle: MouseListener und Graphics? Java Basics - Anfänger-Themen 6
M MouseListener Java Basics - Anfänger-Themen 2
kitz MouseListener Java Basics - Anfänger-Themen 8
B MouseListener & Graphics Java Basics - Anfänger-Themen 10
D Problem mit Mouselistener und jtable Java Basics - Anfänger-Themen 7
C fragen zu MouseListener Java Basics - Anfänger-Themen 3
F Logikproblem: Auf Mouselistener warten Java Basics - Anfänger-Themen 6
E Auf Mouselistener warten?! Java Basics - Anfänger-Themen 20
S Probleme mit 2 mouselistener Java Basics - Anfänger-Themen 6
A Frage zu MouseListener Java Basics - Anfänger-Themen 2
D Mouselistener Java Basics - Anfänger-Themen 2
A jPanel an MouseListener übergeben? Java Basics - Anfänger-Themen 2
S Swing JEditoPane MouseListener Java Basics - Anfänger-Themen 5
M Mouselistener Java Basics - Anfänger-Themen 4
S MouseListener funzt net. Java Basics - Anfänger-Themen 5
G MouseListener double click? Java Basics - Anfänger-Themen 1
V MouseListener Java Basics - Anfänger-Themen 5
M MouseListener Java Basics - Anfänger-Themen 3
N Mouselistener? Java Basics - Anfänger-Themen 5
T ein MouseListener pro Objekt sinnvoll? Java Basics - Anfänger-Themen 4
F MouseListener - Unhandled IOException Java Basics - Anfänger-Themen 2
U MouseListener Java Basics - Anfänger-Themen 2
L Array von Buttons, jeder soll MouseListener haben Java Basics - Anfänger-Themen 5
S MouseListener - Events auf Mouseklick Java Basics - Anfänger-Themen 14
L MouseListener Problem. Java Basics - Anfänger-Themen 2
S mouselistener Java Basics - Anfänger-Themen 3
N MouseListener Java Basics - Anfänger-Themen 2
J MouseListener implementieren Java Basics - Anfänger-Themen 12
P MouseListener wird anscheinend nicht benutzt Java Basics - Anfänger-Themen 12
N MouseListener - reagiert zu spät Java Basics - Anfänger-Themen 3
D JList - Textzeilen MouseListener zuweisen Java Basics - Anfänger-Themen 4
M prüfen ob mouselistener gesetzt ist. Java Basics - Anfänger-Themen 10
O image und mouseListener Java Basics - Anfänger-Themen 15
W MouseListener Probleme beim Abfangen Java Basics - Anfänger-Themen 8
P Kann keinen MouseListener hinzufügen Java Basics - Anfänger-Themen 3
G MouseListener einbauen - wie? Java Basics - Anfänger-Themen 4
A Signierte Exe Datei funktioniert nicht mehr Java Basics - Anfänger-Themen 1
A Signierte Exe Datei funktioniert nicht mehr Java Basics - Anfänger-Themen 3
C my_table.setRowSelectionAllowed(true) funktioniert nicht; Java Basics - Anfänger-Themen 0
B Warum funktioniert die Lösung von CodeGym aber meine nicht? Java Basics - Anfänger-Themen 3
I Webservice funktioniert nicht Java Basics - Anfänger-Themen 5
C Abbruch einer Schleife mit break, meine Übung funktioniert nicht richtig Java Basics - Anfänger-Themen 4
S Erstes Programm: Hallo Welt funktioniert nicht. Java Basics - Anfänger-Themen 3
J Datenüberwachung funktioniert nicht Java Basics - Anfänger-Themen 9
mo13 JTextField funktioniert nicht Java Basics - Anfänger-Themen 4
G .jar datei öffnen funktioniert nicht Java Basics - Anfänger-Themen 17
G Mit jPackage erstellte EXE funktioniert nicht Java Basics - Anfänger-Themen 2
G Robot funktioniert nicht bei SelectionListener Java Basics - Anfänger-Themen 6
R RegEx funktioniert nicht Java Basics - Anfänger-Themen 14
S 2 Reihen ratio-btn, eine Reihe funktioniert andere nicht Java Basics - Anfänger-Themen 4
monsterherz Punkt Notation funktioniert nicht Java Basics - Anfänger-Themen 4
N Programm Funktioniert mit .txt Datei aber nicht mit .rtf Datei Java Basics - Anfänger-Themen 2
D Quellcode für cmd funktioniert nicht Java Basics - Anfänger-Themen 9
ms_cikar Bin to Float convertieren funktioniert nicht Java Basics - Anfänger-Themen 24
B Schrankensystem mit Farberkennung für Flashgame funktioniert nicht wie geplant Java Basics - Anfänger-Themen 4
I Greenscreen, funktioniert nicht zu 100%... nicht alle Pixel werden geändert Java Basics - Anfänger-Themen 1
JordenJost char variable funktioniert irgendwie nicht a+b ergibt nicht à Java Basics - Anfänger-Themen 4
M Operatoren Strings mit Vergleichsoperatoren, funktioniert das? Java Basics - Anfänger-Themen 9
Garrit1994 Continue funktioniert nicht wie geplant Java Basics - Anfänger-Themen 4
B Methoden Übergebe Variabel funktioniert nicht Java Basics - Anfänger-Themen 17
P exportiertes Programm funktioniert nur teilweise Java Basics - Anfänger-Themen 7
Agent4nobody Programmstart durch aufruf des interpreters funktioniert nicht Java Basics - Anfänger-Themen 14
Fugover Programm funktioniert nicht Java Basics - Anfänger-Themen 11
X Datentypen String.equals funktioniert nicht Java Basics - Anfänger-Themen 5
berserkerdq2 wie funktioniert contenthandler, was muss ich bei der Methode startElement und endElement tun? Java Basics - Anfänger-Themen 11
Alen123 Warum funktioniert mein Code nicht? Java Basics - Anfänger-Themen 64
sserio Array funktioniert nicht Java Basics - Anfänger-Themen 2
sserio Wieso funktioniert mein Programm nicht Java Basics - Anfänger-Themen 2
A String split funktioniert nicht, wenn mehr als 1 Ziffer vor dem Zeichen steht nach dem er trennen soll? Java Basics - Anfänger-Themen 4
sserio Größtes Palindrom-Produkt Programm funktioniert nur halb Java Basics - Anfänger-Themen 23
sserio Rekursion größten Primfaktor finden funktioniert nicht Java Basics - Anfänger-Themen 8
sserio Wieso funktioniert mein TableView nicht /JavaFX. Java Basics - Anfänger-Themen 4
Avalon Warum funktioniert eine Bedingung und eine andere nicht? Java Basics - Anfänger-Themen 2
J Datentypen String in File konvertieren funktioniert nicht Java Basics - Anfänger-Themen 4

Ähnliche Java Themen

Neue Themen


Oben