# Programm terminiert nicht (unter Eclipse)



## Professor Chaos (13. Aug 2008)

Hallo,

womöglich gehört miene Frage besser in das Subforum Allgemeines, doch habe ich eine (womöglich völlig falsche) Ahnung, dass mein Problem an der GUI liegt, weswegen ich mein Problem nun doch hier poste.

Ich hoffe, dass meine Frage nicht zu allgemein ist...

Also, ich habe ein Programm, welches zu Beginn mit Hilfe zweier JFileChooser Dateien auwählt. Nachdem mein Programm völlig abgearbeitet ist (d.h. die letzte Zeile der ersten Main-Methode, die aufgerufen wird), terminiert dieses aber nicht! Das erkenne ich daran, dass unter Eclipse noch immer das rote Quadrat anwählbar ist, mit welchem man die JVM abschießt.
Das seltsame dabei ist, dass die letzte Zeile der ersten Main-Methode tatsächlich erreicht wird... Das erkenne ich daran, dass System.out-Anweisungen ausgeführt und ausgegeben werden, sofern ich dort welche plaziere.

Meine Frage ist also, ob jemand eine Idee hat, woran das liegen kann.
Wie bereits gesagt: Mein Geühl sagt mir, dass es an der GUI, also an meinen beiden JFileChoosern liegt. Ist es möglich, dass man diese erst irgendwie "sauber" beenden muss, statt die entsprechenden Objekte auf null szu setzen?


----------



## Verjigorm (13. Aug 2008)

Also falls du irgendwo einen JFrame/JDialog hast, musste da natürlich die defaultCloseOperation oder windowListener setzen.

Ansonsten mach ein System.exit(0) ans Ende vom Quellcode
(was das eigentliche Problem lediglich unsauber behebt)

Ohne Quellcode können wir dir da vermutlich nicht weiterhelfen


----------



## Professor Chaos (13. Aug 2008)

Hi,

zunächst: Danke für die (flotte) Antwort!



			
				Verjigorm hat gesagt.:
			
		

> Also falls du irgendwo einen JFrame/JDialog hast, musste da natürlich die defaultCloseOperation oder windowListener setzen.


Öhm, innerhalb von etwa zwei Minuten Suchen in diesem Forum konnte ich nichts entsprechendes finden.^^ Auch schlägt mir Eclipse (mit STRT+LEER) nichts entsprechendes vor. Könnte ich Code haben? 



			
				Verjigorm hat gesagt.:
			
		

> Ansonsten mach ein System.exit(0) ans Ende vom Quellcode (was das eigentliche Problem lediglich unsauber behebt)


Ja, auf diese Weise hatte ich es auch schon gelöst, aber wie du bereits festgestellt hast: Das ist unschön. Außerdem ist das für meine Zwecke nicht hinreichend, da ich mit JUnit arbeite. D.h. mein Programm wird zu Testzwecken mehrmals gestartet. Habe ich am Ende die Anweisung System.exit(0), so wird nur ein Test durchgeführt (statt beliebig vieler), und dieser wird von JUnit noch nicht einmal als bestanden angezeigt.




			
				Verjigorm hat gesagt.:
			
		

> Ohne Quellcode können wir dir da vermutlich nicht weiterhelfen


Ich dachte, die  Lösung sei vielleicht auch ohne Code offensichtlich. 
Hier ist also mein Minimalbeispiel, nach dessen Ausführung mein Programm nicht terminiert.


```
public static void main(String[] args) {
		String filedirectory = "someDirectory"
		
		JFileChooser fc = new JFileChooser();
		fc.setCurrentDirectory(new File(filedirectory));
		fc.setAcceptAllFileFilterUsed(false);
		fc.setFileFilter(new FileFilter(){
			@Override
			public boolean accept(File f) 
			{ 
				return ( f.isDirectory() || //folders are not allowed
						f.getName().toLowerCase().endsWith("txt"));  
			}
			@Override
			public String getDescription() 
			{
				return "TXT"; 
			} 
		});
		int selected = fc.showOpenDialog(new JDialog());
		if(selected != JFileChooser.CANCEL_OPTION){
			//nothing to do!
		}else{
			// CANCEL - nothing has been chosen
			System.out.println("user aborted - EXIT");
			System.exit(0);
		}
	}
```


----------



## kleiner_held (13. Aug 2008)

Aendere

```
int selected = fc.showOpenDialog(new JDialog());
```
zu

```
int selected = fc.showOpenDialog(null);
```


----------



## Professor Chaos (13. Aug 2008)

kleiner_held hat gesagt.:
			
		

> Aendere [...] in [...]


Vielen Dank, Problem gelöst!


----------



## Verjigorm (13. Aug 2008)

Professor Chaos hat gesagt.:
			
		

> Hi,
> 
> zunächst: Danke für die (flotte) Antwort!
> 
> ...



Du sollst nix im Forum suchen, du sollst in den Quelltext schauen 
Da hatteste nämlich einen JDialog versteckt (wenn auch völlig falsch angewendet)

Naja Problem hat sich ja gelöst.


----------

