Cross-Plattform-Weg, um eine Datei zu öffnen, die mit Java 1.5
Ich bin mit Java 1.5 und ich würde gerne starten Sie die zugeordnete Anwendung, die Datei zu öffnen. Ich weiß, dass Java 1.6 eingeführt, die Desktop-API, aber ich brauche eine Lösung für Java 1.5.
Bisher habe ich einen Weg gefunden, es zu tun in Windows:
Runtime.getRuntime().exec(new String[]{ "rundll32",
"url.dll,FileProtocolHandler", fileName });
Ist es ein cross-Plattform-Weg, es zu tun? Oder zumindest eine ähnliche Lösung für Linux?
InformationsquelleAutor asalamon74 | 2008-11-28
Du musst angemeldet sein, um einen Kommentar abzugeben.
+1 für diese Antwort
Zusätzlich würde ich vorschlagen, die folgende Implementierung mit Polymorphismus:
Diese Weise können Sie neue Plattform erleichtert durch die Reduzierung der Kopplung unter den Klassen.
Der Client-code:
Die Desktop-impl:
Dies ist nur ein Beispiel, im wirklichen Leben ist es nicht Wert, um erstellen Sie eine neue Klasse nur dann einstellen einen Wert ( den Befehl Zeichenfolge %s ), Aber lasst uns vorstellen, dass jede Methode führt weitere Schritte in der Plattform bestimmte Art und Weise.
Diese Art von Ansatz kann entfernen unnötige if/elseif/else-Konstrukte, die mit der Zeit einführen können Fehler ( wenn es gibt 6 von diesen in den code und eine änderung ist neede, können Sie vergessen zu aktualisieren, oder durch kopieren/einfügen können Sie vergessen, ändern Sie den Befehl ausführen)
Sie sich nicht zu erklären, warum Sie denken, es ist nicht eine Lösung, dass die Art und Weise, die Menschen Lesen diese Antwort zu bewerten, ob zu verwenden oder nicht.
Sie zeigen nicht, jeder code, der tatsächlich funktioniert und öffnet den Standard-browser für java 1.5, nur einige Skelett, ohne jede nützliche Umsetzung, es ist, warum ist dies keine Lösung.
InformationsquelleAutor OscarRyz
und
Sollten Sie verwenden
xdg-open
stattgnome-open
oderkfmclient
oder was auch immer, damit es funktioniert eher gut in xfce oder andere Umgebungen.InformationsquelleAutor Willi aus Rohr
JDIC ist eine Bibliothek, die es ermöglicht Desktop-ähnliche Funktionalität in Java 1.5.
InformationsquelleAutor Dan Vinton
Nur als Ergänzung: Anstatt
gnome-open
verwendenxdg-open
. Es ist Teil des XdgUtils, die wiederum Teil des LSB-Desktop-support-package (ab 3.2).Sie können (sollten) noch verwenden
gnome-open
als fallback, aberxdg-open
funktioniert auch auf nicht-GNOME-Desktop.InformationsquelleAutor Torsten Marek
SWT gibt Ihnen die Möglichkeit, lokk für das standard-Programm zum öffnen einer Datei über:
Streng dies ist nicht Cross-Plattform, da SWT ist Plattform-abhängig, aber für jede Plattform, die Sie verwenden können, eine diffenrent SWT jar.
Wahrscheinlich ist dies sehr nützlich für Java 1.5 + SWT-Nutzer. Aber mit SWT nur für diese möglicherweise nicht optimal.
InformationsquelleAutor boutta
Können Sie mit dem OS-Standard-Weg, um es zu öffnen für Sie.
InformationsquelleAutor OscarRyz
Einer anderen Antwort (von boutta) schlägt mit SWT. Ich würde nicht empfehlen, verweisen auf die Bibliothek für diesen Zweck, aber wenn Sie verwenden es bereits, einfach ausführen:
Beachten Sie, dass diese Methode funktioniert nur (und zurück
true
) wenn einDisplay
Objekt bereits erstellt wurde (zum Beispiel durch die Schaffung einerShell
). Beachten Sie auch, dass es laufen muss in der main-thread; z.B.:In dem Beispiel oben habe ich gestartet, eine URL, sondern starten von Dateien funktioniert in der gleichen Weise.
InformationsquelleAutor Paul Lammertsma
Wir tun, setzen Sie den Befehl draußen irgendwo in der Konfigurationsdatei.
Ihre "JAR" und "source code" wird eine "cross-Plattform", sondern Ihre Bereitstellung nicht.
Können Sie auch etwas tun, wie diese Antwort. Sie können die Klassennamen der factory-Klasse der "Deskop" Umsetzung in die setup-Datei. (kann guide oder im Frühling, wenn Sie möchten)
InformationsquelleAutor Dennis C