Runtime.exec unter Linux

Status
Nicht offen für weitere Antworten.

Math55

Bekanntes Mitglied
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🙂
 
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...
 
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?
 
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
Code:
Runtime.getRuntime().exec( "c:/text.txt" );
zu einer Exception führt und
Code:
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!?
 
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
 
ich habe es so unter linux...

kann mal jemand testen?

Code:
 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 🙂
 
>> 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....
 
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.
 
Math55 hat gesagt.:
ich habe es so unter linux...

kann mal jemand testen?

Code:
 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 🙂

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

Code:
~: /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.
 
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 😉
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben