# Runtime.exec unter Linux



## Math55 (27. Apr 2005)

hallo, ich hab mal eine dringende frage. ich möchte aus meinem java programm dateien ausführen und zwar ohne angabe einer dafür nötigen anwendung. unterwindows kann man ja einfach einen dateinamen auf die konsole schreiben, also seite.html und er öffnet die datei im browser. unter linux geht das aber nicht. sieht da jemand eine lösung? ich könnte mir zwar eine mime datenbank bauen, wo alle endungen drin stehen und die passenden anwendungen, aber das ust doch recht viel arbeit und wird wohl auch nicht komplett sein.

danke


----------



## Bleiglanz (27. Apr 2005)

versuchs halt mit "konqueror"  als anwendung?

brauchst du nur html? oder auch andere endungen?

stabil kriegst du die gewünschte funktionalität eh nicht hin...


----------



## Math55 (27. Apr 2005)

hi, egal welche endung. ich habs schon mit nem browser probiert, aber wenn der eben die endung nicht kennt, macht er auch nix :-(...noch ne idee?


----------



## Sky (27. Apr 2005)

Math55 hat gesagt.:
			
		

> hi, egal welche endung. ich habs schon mit nem browser probiert, aber wenn der eben die endung nicht kennt, macht er auch nix :-(...noch ne idee?


Wenn Windows die Endung .html nicht kennt, dann macht er auch nichts!

Und es ist ja auch so, dass 
	
	
	
	





```
Runtime.getRuntime().exec( "c:/text.txt" );
```
 zu einer Exception führt und 
	
	
	
	





```
Runtime.getRuntime().exec( "cmd /c c:/text.txt" );
```
 öffnet erst den Text (in meinem Bsp.) So müßte es doch auch unter linux gehen, oder? Heißt also Konsole starten und String übergeben!?


----------



## thE_29 (27. Apr 2005)

LESEN! 

Es steht im Topic: LINUX 

Nachtrag: achso, du machst nen Vergleich 



Tjo, er sollt mal "konsole -e bla.txt" probieren, ist das gleiche wie cmd /c


----------



## Math55 (27. Apr 2005)

ich habe es so unter linux...

kann mal jemand testen?


```
String cmd1 = "/bin/bash -c" + "\"" + file.toString() + "\"";
 Process runCommand = Runtime.getRuntime().exec(cmd1);
```

file.tostring ist eine date mit komplettem paf also /usr/bin/hallo.mp3 oder sowas in der art

gruß und danke


----------



## Bleiglanz (27. Apr 2005)

>> egal welche endung?

Was willst du machen? Bist du sicher dass Java dafür das richtige werkzeug ist??

Unter Linux gibt leiden keinen standadisierten "Launcher", der immer und überall vorhanden ist - selbst wenn, dann ist immer noch nicht klar, welche Software gestartet werden soll....


----------



## Math55 (27. Apr 2005)

hi, genau das meine ich. irgendwie muss das doch gehen.... ???:L


----------



## Roar (27. Apr 2005)

und nochmal den gleichen link: http://jdic.dev.java.net


----------



## AlArenal (27. Apr 2005)

Die Situation unter Linux-Systemen ist einfach, dass der User die freie Auswahl zwischen zig hunderten verschiedener Tools für verschiedene Zwecke hat. 

Oben angemerkter "konquerer" bringt einem nur etwas wenn man weiß, dass der User auch KDE installiert hat. Ebenso siehts beim Aufruf von GNOME-Komponenten aus. Ich habe daheim derzeit XFCE4 laufen und weder GNOME noch KDE installiert. Eine zentrale Registrierungsstelle für ANwendungen und Dateitypen gibts es nicht.

Man kann lediglich eine Anwendung auf bestimmte Fälle vorbereiten (nach häufig genutzten Anwendungen suchen und die Pfade entsprechend setzen) oder aber dem User einen Konfigurationsdialog geben, in derm er die Verknüpfung selbst machen kann. Beides ist natürlich auch kombinierbar.


----------



## Demo (28. Apr 2005)

Math55 hat gesagt.:
			
		

> ich habe es so unter linux...
> 
> kann mal jemand testen?
> 
> ...



ich bin mir sehr sehr sicher, das du sowas sehen wuerdest:


```
~: /bin/bash: line 1: dateiname: Permission denied
```

Dieser Versuch wird nur funktionieren, wenn du der Bash was zum ausfuehren uebergibst (voller Pfad) oder eine App die in $PATH steht. 

Java ist unter Linux nicht das richtige Werkzeug zur Desktopintegration. Schon alleine aufgrund der Vielfalt der DE. Es gibt zwar eine Menge Versuche, wenigstens Oberflaechenmaessig eine Integration hinzubekommen (java-gnome,qt-java), aber das ist nix halbes und nix ganzes. 

Hier hilft wirklich nur der von AlArenal vorgeschlagene Weg.


----------



## Demo (28. Apr 2005)

Achja, ein Pendant zu Apples open Befehl waere unter Linux hilfreich, aber da kommt wieder die MIME Geschichte zum tragen. So dreht sich die Katze im Kreis ..oder so


----------

