Hallo,
bei meiner Studienarbeit ist mir etwas komisches aufgefallen .. jedesmal wenn ich ein Dokument exportiert habe (in eine Datei geschrieben habe, beendete sich der Prozess des Programms nicht korrekt und blieb aktiv, das Programm selbst war nicht mehr sichtbar).
Es gab nur eine Stelle welche da in Frage kam, denn wenn ich die selbe Funktionalität ohne GUI getestet habe, ging es problemlos. Alles wurde korrekt beendet.
Folgender Code zeigt, wie es momentan umgesetzt ist, und einwandfrei funktioniert. Das Problem ist also schon behoben, aber mir ist nicht klar warum es dazu kam.
Der Aufruf in Zeile 23 diente ebenfalls als Testaufruf ohne GUI .. das ging ohne Probleme, das heisst etwas davor oder danach musste mir diesen "Zombieprozess" erzeugen. Nach reichlich probieren vertauschte ich die Reihenfolge vom FileChooser und des JOptionPane und es ging.
fehlerhafte Version also:
JOptionPane wurde zuerst aufgerufen um ein Tool auszuwählen, nach Bestätigung wurde der FileChooser geöffnet um die Zieldatei für den Export zu wählen. Die Datei wurde erfolgreich geschrieben, alle Fenster verschwanden wie erwartet. Beendete ich nun das gesamte Programm bliebt der Prozess offen.
So wieder Code da oben steht geht es nun, die Frage die ich mir Stelle:
Warum sollte die Reihenfolge der 2 Dialoge einen Einfluss darauf haben ob ein Zombi übrig bleibt oder nicht? Hat jemand schonmal sowas erlebt?
bei meiner Studienarbeit ist mir etwas komisches aufgefallen .. jedesmal wenn ich ein Dokument exportiert habe (in eine Datei geschrieben habe, beendete sich der Prozess des Programms nicht korrekt und blieb aktiv, das Programm selbst war nicht mehr sichtbar).
Es gab nur eine Stelle welche da in Frage kam, denn wenn ich die selbe Funktionalität ohne GUI getestet habe, ging es problemlos. Alles wurde korrekt beendet.
Folgender Code zeigt, wie es momentan umgesetzt ist, und einwandfrei funktioniert. Das Problem ist also schon behoben, aber mir ist nicht klar warum es dazu kam.
Java:
public void exportFile() {
JFileChooser fc = new JFileChooser(lastUsedPath);
int retVal = fc.showSaveDialog(null);
if (retVal == JFileChooser.APPROVE_OPTION) {
String tool = (String) JOptionPane.showInputDialog(null,
"Choose tool ..",
"Export formula",
JOptionPane.PLAIN_MESSAGE,
null,
BackendFacade.getInstance().getActiveGrammar().getToolsForMapping().toArray(),
null);
if (tool == null) {
return;
} else {
try {
File tempFile = File.createTempFile("tempFormula", "temp", null);
BufferedWriter bw = new BufferedWriter(new FileWriter(tempFile));
bw.write(editor.getSelectedFileView().getText());
bw.close();
FormulaFileWriter.exportToFile(BackendFacade.getInstance().getActiveGrammar(), tool, tempFile, fc.getSelectedFile().getAbsoluteFile());
tempFile.delete();
} catch (Exception e) {
SimpleLog.print("ERROR - EditorController: " + e.getLocalizedMessage() + "\n" + e.getMessage());
}//try
}//if
}//if
}//exportFile
Der Aufruf in Zeile 23 diente ebenfalls als Testaufruf ohne GUI .. das ging ohne Probleme, das heisst etwas davor oder danach musste mir diesen "Zombieprozess" erzeugen. Nach reichlich probieren vertauschte ich die Reihenfolge vom FileChooser und des JOptionPane und es ging.
fehlerhafte Version also:
JOptionPane wurde zuerst aufgerufen um ein Tool auszuwählen, nach Bestätigung wurde der FileChooser geöffnet um die Zieldatei für den Export zu wählen. Die Datei wurde erfolgreich geschrieben, alle Fenster verschwanden wie erwartet. Beendete ich nun das gesamte Programm bliebt der Prozess offen.
So wieder Code da oben steht geht es nun, die Frage die ich mir Stelle:
Warum sollte die Reihenfolge der 2 Dialoge einen Einfluss darauf haben ob ein Zombi übrig bleibt oder nicht? Hat jemand schonmal sowas erlebt?