Hallo.
Ich habe bei einem Programm, das eigentlich fehlerfrei läuft folgendes problem:
Ab und zu, ungefähr bei jedem 10.ten programmstart flackert in der eclipse console eine fehlermeldung auf,
halt ne stacktrace von irgendeiner exception. Aber so schnell wie sie erscheint verschwindet sie auch einfach wieder.
Ich habe also keine möglichkeit irgendetwas zu erkennen. Wie gesagt, sonst treten eigentlich keine fehler auf.
Woran kann das liegen? Brauch ich das nicht weiter zu beachten? Oder kann ich mir das irgendwo speichern lassen was da unten
augegeben wird, auch wenn ich nicht genau weiss wo oder was das ist?
Das Wort „eigentlich“ impliziert doch die Tatsache, dass eben nicht alles rund läuft
Wenn der Stacktrace in Eclipse wieder schnell verschwindet, dann müsstest du ja noch andere ausgaben haben, die den Stacktrace entsprechend schnell aus dem Cache der Console werfen. Schalte die doch ab. Oder aber erstell eine Jar und starte diese von der Kommandozeile aus und leite die Ausgabe in eine Datei um. Andernfalls kannst du natürlich auch System.out und System.err komplett in eine Datei umleiten (System.setOut() und System.setErr()), dann kannst du das Programm auch weiterhin aus Eclipse heraus starten und so die Ausgaben in eine Datei schreiben lassen.
Eine Exception wird normalerweise nicht zum Spaß geworfen und das macht auch nicht Eclipse, sondern da wird was in deinem Programm schief laufen. Ganz egal wie selten sowas auftritt, dem würde ich nachgehen und das Problem beseitigen.
Nun ja, das werde ich wohl mal versuchen müssen…
Nein also mit eigentlich meine ich das ich nichts bemerke, weder bei der anwendung, noch zur laufzeit in der konsole.
Wie gesagt hab halt gerade eben erst dieses seltene “aufflackern” bemerkt.
Ich schau mir mal System.setOut() an, vieleicht bringt das ja was.
danke erstmal!
Edit:
danke nochmal, das hier klappt jetzt:
OutputStream output = new FileOutputStream(new File("log.txt"));
PrintStream printOut = new PrintStream(output);
System.setOut(printOut);
System.setErr(printOut);
}
catch (Exception e) {
e.printStackTrace();
}
bin mal gespannt was der fehler sein wird.
Edit 2:
Unglaublich, der fehler wird nicht in die datei geschrieben… Alle anderen schon aber dieser nicht…
Der obige code ist der erste in der main methode - was soll ich jetzt tun?
*** Edit ***
Mit alle anderen meine ich wenn ich zum beispiel am anfang des programms schreibe: int a = 3 / 0; das wird dort erfolgreich notiert. aber dieses aufflackernde nicht…
Das ist sicher eine andere Konsole, die mit Deinem Programm nichts zu tun hat. Schau mal, ob es unter “Display Selected Console” (zweiter Button von links in der Console-View) noch andere Konsolen gibt. Alternativ könnte es auch die “Error Log” View von Eclipse selbst sein…
und wie kann ich diese meldung “speichern” lassen um zu gucken was da schief läuft?
*** Edit ***
okay hattest recht, war wirklich die error log von eclipse…
aber die dortigen fehlermeldungen kann ich keineswegs nachvollziehen. Er sagt mir dort Resource xxx existiert nicht, (eine klasse)
die ich aber in dem projekt nirgedns benutze. Also, wie kann das sein? was versucht eclipse da zu machen?
Das hast du vielleicht schon längst gemacht, aber ich frags einfach trotzdem mal. Hast du mal versucht ein “Clean Project” zu machen?
Solche Art von Eclipse bezogenen Fehlern bekomme ich immer wenn ich längere Zeit wild herumkonfiguriert habe. Auch wenn ich mir sicher war, dass ich alles, was ich geändert habe wieder in den Ursprungszustand zurückversetzt habe, hatte ich ab und zu Eclipse Fehler die nicht verschwinden wollten. Ein “Clean” hat da meist immer geholfen.
Und es hilft mir immer, wenn man mehrere Projekte offen hat in Eclipse, alle die zu schließen an denen man derzeit nicht arbeitet.
achso also mit “close project”?
gut das werde ich mal machen.
Das mit dem clean project hate ich getan, allerdings bevor dieser fehler auftrat. werde es nochmal tun, danke!
Vielleicht reicht es auch im Eclipse bei der Console unter ‘Preferences’ den Buffer raufzusetzen. Dann könntest du vielleicht dein Programm einfach beenden und zur geworfenen Exception in der Console zurückscrollen.
Vielen Dank, eine nützliche Funktion.
Aber hier hat es nichts mit einem Buffer zu tun, denn die exception ist ziemlich kurz (soweit ich es erkennen kann), und verschwindet nach
dem auftauchen komplett, also nix mit raufscrollen…
Wie kurz ist dieses ‘Aufflackern’?
Reicht die Zeit, um einen Schuss zu machen?
Ist dein Programm so umfangreich, dass du uns den Code dazu nicht posten kannst? Vielleicht, tritt der Fehler auf anderen Systemen nicht auf - vielleicht ist es nur ein Aufflackern deines Virenprogramm, welches sich gerade updatet, oder irgend sowas…
Nachvollziehen kann das wohl mit den Infos keiner, also Code posten, oder selber probieren. Bau einen Timer in den Catch Block ein, dann kannst du es vielleicht lesen.
Wenn in der Fehlerdatei nichts ist, gibt’s auch keine Fehler - vielleicht ne Warnung? Dann Code nochmal überprüfen.