Wie kann ich ein Java-Programm zum "automatischen Öffner" einer Dateisorte machen?

Java-Insel

Aktives Mitglied
Man kennt es von Programmen wie der Vorschau, QuickTimePlayer oder anderen Programmen: Sie öffnen sich durch klicken auf eine Datei (z.B. grafik.png) und zeigen diese dann im Dateifenster an. Kann ich - und wenn ja, wie - so etwas auch durch einfache Java-Programmierung erzeugen oder braucht es da mehr? Mein Ziel wäre, dass ich ein Programm schreibe, das z.B. *.myjava-Dateien erzeugt. Im Finder/Windows Explorer soll man dann auf eine solche Datei klicken können und mein Programm öffnet sich - und zeigt die Datei natürlich auch an! Wie lässt sich das bewerkställigen?
 
A

Akeshihiro

Gast
Rechtsklick auf die Datei -> Öffnen mit -> Standardprogramm festlegen.
Alternativ kannst du das auch gern in der Windows-Registry eintragen, passiert aber durch Klickibunti auch und geht viel schneller.
 

Michael...

Top Contributor
Stichwort: Dateiverknüpfung. Grundsätzlich ist in der Registry hinterlegt wie bzw. mit welchem Tool eine Datei geöffnet werden soll. Windows bietet - abhängig von der Version - im Explorer die Möglichkeit an die Verknüpfung für eine Dateiendung festzulegen.
 

Kjubert

Aktives Mitglied
Da es hier um Java geht und die Systemunabhängigkeit irgendwie ne Schlüsselrolle spielt - wärs da nicht nett, wenn es ne Standard-Klasse gäbe, die das könnte?
Oder macht das bei MacOS und UNIX keinen Sinn? Ist da doch bestimmt nicht groß anders gelöst, oder?
 

Ark

Top Contributor
Unter *nix startet man für gewöhnlich Programme, und nicht die Dateien, die mit diesen Programmen geöffnet werden sollen. Anders wäre es auch ein ziemliches Sicherheitsproblem: Der MP3-Start-umgeht-Windows-Media-Player-Sperre-Effekt ist wohl eher in der Windowswelt verbreitet. :D

Mal von diesem grundsätzlichen Unterschied abgesehen, gibt's bei Linuxsystemen wohl auch einfach viel zu viel Auswahl. Da müsste ja jeder Fenstermanager, jede Desktopumgebung und - wenn man den Windows-Murks nachbauen wollte - sogar jede Shell berücksichtigt werden. Ich glaube nicht, dass Linuxnutzer das wollen.

Ark
 

Kjubert

Aktives Mitglied
[OT]
Unter *nix startet man für gewöhnlich Programme, und nicht die Dateien, die mit diesen Programmen geöffnet werden sollen. Anders wäre es auch ein ziemliches Sicherheitsproblem: Der MP3-Start-umgeht-Windows-Media-Player-Sperre-Effekt ist wohl eher in der Windowswelt verbreitet. :D

Mal von diesem grundsätzlichen Unterschied abgesehen, gibt's bei Linuxsystemen wohl auch einfach viel zu viel Auswahl. Da müsste ja jeder Fenstermanager, jede Desktopumgebung und - wenn man den Windows-Murks nachbauen wollte - sogar jede Shell berücksichtigt werden. Ich glaube nicht, dass Linuxnutzer das wollen.

Ark

OK, das leuchtet mir ein.
Aber Windows-Media-Player-Benutzer habens ja auch garnicht anders verdient.[/OT]
 
G

Guest2

Gast
Moin,

es gibt innerhalb der JNLP ein association tag, mit dem die Java Anwendung für bestimmte Dateitypen registriert werden kann. (JNLP File Syntax)

Das geht auch aus dem laufenden Programm heraus über IntegrationService.requestAssociation (JNLP API Examples)

(Ausprobiert hab ich das aber auch noch nicht.)

Viele Grüße,
Fancy
 

Java-Insel

Aktives Mitglied
Hmm. Das ist ja alles schön und auch gut und ich werde das ausprobieren, aber wie kann mein Programm den dann mit der Datei umgehen? Wenn ich alles richtig übersetzt habe, kann man mit der JNLP das Programm für Dateitypen registrieren, aber wie das Programm mit der Datei umgehen soll, davon habe ich (bis jetzt) noch nichts gesehen.
 

Java-Insel

Aktives Mitglied
Puh... ich bin grad irgendwie überfordert mit meinem Englisch. Wenn ich es richtig verstehe, ist die JNLP-Datei eine *.xml-Datei, mit der man über Java-Befehle kommunizieren kann. Kann mir da jemand bitte ein Beispiel zeigen? Ich währe sehr, sehr, sehr Dankbar.
 
J

J7Dev

Gast
@TO
Ganz einfach :

FileType -> Open -> "javaw.exe -jar DeinProgramm.jar %1"

Damit wird der absolute Pfad zu der von dir angewählten Datei (also die auf die du Doppelklick machst" als Parameter an dein Programm übergeben. Diese Wiederum muss allerdings erstmal mit Java gestartet werden. Als Beispiel ist ".jar" genau so verknüpft : "javaw.exe -jar %1".

Unter Win7 geht das so :

CMD.exe als ADMIN starten
über "assoc" den Dateitypen registrieren :
Code:
assoc .myfiletype=MyFileType
über "ftype" den Dateitypen mit einem "open-command" registrieren :
Code:
ftyp MyFileType="C:\absoluter\pfad\zum\Java\home\bin\javaw.exe" -jar "C:\absoluter\pfad\zum\jar\Programm.jar" "%1"

ANFÜHRUNGSZEICHEN SIND WICHTIG ! MITSCHREIBEN !

Eventuell "explorer.exe" neu starten (oder ganzes System) und das ganze sollte funktionieren.

Unter Vista gehts genau so, XP und alles was älter ist : im Explorer -> Erweitert und dann "Dateitypzuordnung" oder so ähnlich und da kann man das ganze dann über ne GUI machen.
 
G

Guest2

Gast
Puh... ich bin grad irgendwie überfordert mit meinem Englisch. Wenn ich es richtig verstehe, ist die JNLP-Datei eine *.xml-Datei, mit der man über Java-Befehle kommunizieren kann. Kann mir da jemand bitte ein Beispiel zeigen? Ich währe sehr, sehr, sehr Dankbar.

Die JNLP-Datei gehört zu Java Webstart. Das ist eine Java-Technologie um Java Anwendungen sehr einfach zu verteilen, zu installieren und zu starten. In der JNLP-Datei werden dazu Informationen hinterlegt, z.B. woher die Anwendung Updates beziehen kann, ob eine Verknüpfung im Startmenü angelegt werden soll, mit welchen VM-Parametern gestartet werden soll, oder eben ob die Anwendung mit bestimmten Dateitypen verknüpft werden soll.

Webstartanwendungen laufen in der Sandbox. Die JNLP-API bietet Methoden, um auch aus dieser Sandbox heraus mit dem System interagieren zu können. Alternativ kann die Anwendung auch signiert werden und darf dann "alles" (genau wie jede lokal installierte Anwendung auch).

Ich habe mir die Verknüpfung zu bestimmten Dateitypen aus der JNLP-Datei heraus inzwischen mal angesehen. Das läuft problemlos.

Meine Test- JNLP-Datei und die zugehörige "Anwendung".

Beim ersten Start der Anwendung wird beim Nutzer nachgefragt, ob dieser den Dateityp entsprechend verknüpfen möchte, das sieht dann so aus:

association.png


Legt man anschließend eine dateiname.xyz Datei an, kann diese anschließend einfach per Doppelklick geöffnet werden. Spätestens nach einmal neu starten trägt die Datei auch das Icon der Anwendung (oder wann immer Windows merkt das es da ein neues Icon zu gibt).

Zum selbst lokal testen einfach auf diesen Link klicken (sollte mit Java Webstart geöffnet werden). (Ist für Java 7 kompiliert, notfalls bietet Webstart auch ein Update der JRE an. Grundsätzlich geht das aber auch alles mit Java 6.)

Unter Linux funktioniert das mit der original Oracle JRE genau so (nur unter Fedora/Gnome 3 getestet). Mit IcedTea jedoch leider nicht.

Viele Grüße,
Fancy
 
J

jnetdev

Gast
wenn das ganze MULTI-Platform werden soll : VERGISS ES

wie schon jemand sagte : unter windows ist das noch easy ... aber spätestens an den unterschiedlichen UNIX versionen scheiterst du und müsstest einen "installer" schreiben der größer is als das programm ...
 
G

Guest2

Gast
Bei welchem Betriebssystem siehst Du denn konkret Probleme? In der JNLP/Webstart-Spezifikation sind mir dazu keine Beschränkungen aufgefallen. Wenn es also irgendwo nicht geht, müsste man ggf. drüber nachdenken einen Bug report zu stellen.

Das es mit IcedTea nicht geht ist zwar schade, aber ich gehe davon aus, dass die Desktop Integration von IcedTea einfach noch nicht feature complete ist. Die Verknüpfung ins Startmenü klappt ja z.B. auch mit IcedTea. Und mit der Oracle JRE sowieso (OS übergreifend).

Viele Grüße,
Fancy
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
E Output Fehler (Java-Programm Kuchen) Allgemeine Java-Themen 11
S Java Programm lässt sich vom USB-Stick starten, aber nicht von HDD Allgemeine Java-Themen 16
A Java Programm erstellen hilfe Allgemeine Java-Themen 10
B Java Programm auf virutellem Desktop laufen lassen? Allgemeine Java-Themen 1
L Java überprüfen lassen, ob sich ein gegebener Pfad / das Programm an sich auf einer CD oder Festplatte befindet Allgemeine Java-Themen 14
J c Programm läuft nicht in compilierter Version des Java Projektes Allgemeine Java-Themen 7
Dann07 Java-Programm findet DLLs nicht! Allgemeine Java-Themen 20
P USER Management in SQL übergreifend auf JAVA Programm Allgemeine Java-Themen 41
D Verkauf von einem Programm welches ich in Java geschrieben habe Allgemeine Java-Themen 4
D Boolean von ein anderem Java Programm während der Laufzeit ändern Allgemeine Java-Themen 23
L Excel Datei löscht sich selbst im Programm - Java Allgemeine Java-Themen 3
ralfb1105 Starten Java App(s) (.jar) aus einem Java Programm Allgemeine Java-Themen 18
temi Java Programm aus einer DB laden und starten Allgemeine Java-Themen 2
E Java Programm mit Clients erweitern - Möglichkeiten? Allgemeine Java-Themen 2
J Java "Bank Programm" Brauche eure Hilfe Allgemeine Java-Themen 3
S Java Programm (Spiel mit den Boxen) Allgemeine Java-Themen 1
A Java Programm verbessern/vereinfachen Allgemeine Java-Themen 20
E Mit Java ein Python Programm starten Allgemeine Java-Themen 20
Q-bert Daten von Java Programm speichern Allgemeine Java-Themen 4
P Schnittstelle java Programm zu Webserver / Browser Allgemeine Java-Themen 2
Blender3D Java Swing Programm Windows 10 Autostart Problem Allgemeine Java-Themen 2
F Java-Programm lizensieren Allgemeine Java-Themen 21
T Java Programm in Internetseite? Allgemeine Java-Themen 4
T Java Programm frisst RAM Allgemeine Java-Themen 6
H Alter Java-Programm läuft nicht mehr. Laut strace fehlt libpthread.so.0 Allgemeine Java-Themen 3
L Java-Programm Zahlenkombinationen ausgeben Allgemeine Java-Themen 10
T Java Programm sauber beenden (Mac OS) Allgemeine Java-Themen 7
F In OSX: Java-Programm über URI-Scheme aufrufen mit Parameter? Allgemeine Java-Themen 0
itwestnet Mein Java-Programm läuft nicht in China Allgemeine Java-Themen 4
B SMS von Vodafone Mobile Connest mit JAVA-Programm lesen Allgemeine Java-Themen 0
J Java Auf anderes Programm warten Allgemeine Java-Themen 9
R Java .class-File-Konstrunkt mit Programm visualisieren Allgemeine Java-Themen 18
Developer_X OpenStreetMap in Java Programm einbinden Allgemeine Java-Themen 10
Developer_X Java Programm Beenden Allgemeine Java-Themen 3
T Dateien zur Laufzeit in Java-Programm packen? Allgemeine Java-Themen 3
S Java-Programm verbraucht zu viel RAM Allgemeine Java-Themen 8
S Java-Programm für "Börsenanalyse" schreiben Allgemeine Java-Themen 4
U Eclipse Java Programm beschädigt .tar.gz dateien beim Entpacken Allgemeine Java-Themen 7
M Problem mit (etwas komplizierterem) Java Programm Allgemeine Java-Themen 14
L Prüfen, ob Programm über 32bit oder 64bit Java ausgeführt wird Allgemeine Java-Themen 4
J Java Programm - ausführbare Jar Datei erstellen Allgemeine Java-Themen 2
C Programm von C++ auf Java umschreiben Allgemeine Java-Themen 27
J Java-Programm Allgemeine Java-Themen 13
I Java-Programm: Zahlen in Worte Allgemeine Java-Themen 22
P Check, welche Java Version installiert bevor ein Programm ausgeführt wird. Allgemeine Java-Themen 12
O Java-Programm lastet CPU aus Allgemeine Java-Themen 8
C Registration im Web mit Java-Programm durchführen Allgemeine Java-Themen 6
R Java Programm beenden mit SIGTERM Allgemeine Java-Themen 9
T Java Programm als Batch Befehl Allgemeine Java-Themen 6
G Runtime.exec beendet Programm unter Linux, wenn Java Programm beendet wird Allgemeine Java-Themen 3
H Java-Programm nur mit SDK ausführbar? Allgemeine Java-Themen 5
C Java Programm über SSH starten Allgemeine Java-Themen 16
S jar Datei mit Java Programm öffnen Allgemeine Java-Themen 3
J Java-Programm im Hintergrund Allgemeine Java-Themen 3
Jackii Java Programm aus anderen Java Programm starten Allgemeine Java-Themen 20
Madlip Erste Schritte Java speichert Daten im Programm?!? Allgemeine Java-Themen 9
G Java Programm aus Java Programm starten Allgemeine Java-Themen 6
M Wie Java Programm mit grafischen Oberfläche versehen Allgemeine Java-Themen 2
JAVATUX Java Programm mit ATI Stream Unterstützung Allgemeine Java-Themen 3
J Java programm lässt sich in win7 nach linux install nicht mehr ausführen Allgemeine Java-Themen 18
C Mit Java in einem anderes Programm eingreifen Allgemeine Java-Themen 21
S C++/C KeyListener zusammen mit Java Programm Allgemeine Java-Themen 4
S Java Programm -System Neustart überleben? Allgemeine Java-Themen 3
S Brauche Hilfe bei Planung für JAVA-Programm Allgemeine Java-Themen 3
T Java Programm aus anderem Java Programm starten Allgemeine Java-Themen 13
J Eclipse Java Programm aus anderem Java Programm starten Allgemeine Java-Themen 14
F Anderes Java-Programm aufrufen Allgemeine Java-Themen 2
B Excel Datei in einem Java Programm mit GUI darstellen Allgemeine Java-Themen 9
M Java Programm als Dienst starten... Allgemeine Java-Themen 4
A Installation von Java ME Programm auf Sony Ericsson Handy Allgemeine Java-Themen 3
M Rein informativ - Daten aus Excel-Tabelle in Java-Programm importieren Allgemeine Java-Themen 3
J Installer für Java-Programm Allgemeine Java-Themen 5
N Programm starter in Java? Allgemeine Java-Themen 12
X Aus Java Applikation externes Programm starten Allgemeine Java-Themen 3
T Mit JNI von C++ auf ein laufendes Java-Programm zugreifen Allgemeine Java-Themen 10
H aus Java-Programm Dateien öffnen Allgemeine Java-Themen 5
Z Java Programm - xxxxx auf der Konsole ausgeben Allgemeine Java-Themen 4
T cpp Programm via jna in java nutzen Allgemeine Java-Themen 3
M Variablen an Java-Programm übergeben Allgemeine Java-Themen 3
G Java Programm mit Freischalt code entwickeln Allgemeine Java-Themen 30
clupus Meldung an laufendes Java-Programm schicken - Wie? Allgemeine Java-Themen 6
E Zweites Java Programm sichtbar starten Allgemeine Java-Themen 4
T Mit Java Programm auf Firefox zugreifen Allgemeine Java-Themen 2
Airwolf89 *.exe mit java programm ausführen Allgemeine Java-Themen 1
V Java-Programm automatisch starten Allgemeine Java-Themen 2
MQue aktuelle Wetterdaten für Java- Programm Allgemeine Java-Themen 9
O Programm mittels Java installieren Allgemeine Java-Themen 15
K Java Chat Programm Allgemeine Java-Themen 2
M Java programm über cmd öffnen Allgemeine Java-Themen 2
Schandro Datei öffnen mit... Bestimmten Dateityp mit einen Java-Programm öffnen lassen Allgemeine Java-Themen 5
N Per Java-Programm onClick ausführen Allgemeine Java-Themen 5
D mit Java das Programm "Editor" öffnen Allgemeine Java-Themen 7
M Wie Java-Programm über Batch-file starten? Allgemeine Java-Themen 8
G Logikhindernisse im Java- Programm Allgemeine Java-Themen 6
V Java-Programm nur "mit halber Kraft" arbeiten lass Allgemeine Java-Themen 11
_SeiA_ Hilfe Kleines Java Programm schreiben. Summen. Allgemeine Java-Themen 3
G Java- Programm mit bat- Datei starten Allgemeine Java-Themen 16
V Java-Programm richtig neustarten? Allgemeine Java-Themen 9
G JDBC Programm und niedrige Java-Versionen Allgemeine Java-Themen 14
oltoko PID für das laufende Java Programm herausfinden Allgemeine Java-Themen 3

Ähnliche Java Themen

Neue Themen


Oben