jar Anwendung in Windows mit einem bestimmten Dateiformat verknüpfen?

Hallo,

das mit der Konsole lässt sich dann bestimmt durch die Einstellung in der Systemsteuerung klären, aber da ist noch ein wichtigeres Problem. Tue ich eine Textdatei mit der Jar öffnen, wobei sich beide im gleichen Ordner befinden funktioniert das Programm einwandfrei. Befindet sich die Textdatei an einem anderen Ort klappt es nicht so ganz. Das Programm startet zwar, aber bspw. die Icons werden nicht angezeigt, und anderes Fehlverhalten im Programm. Es scheint so, das das Programm nicht mehr auf die restlichen Resourcen wie Bilder oder Konfigurationdatei zugreifen kann.

1) Registrieren des neuen Dateityps .xyz:
Dazu gehen wir im Explorer auf Extras-> Ordneroptionen -> Dateitypen und sagen dort Neu. Anschließend geben wir als Datei Erweiterung xyz und bei "Verknüpfung mit Dateityp" Executable jar file an.
2) Wir klicken unseren Registrierten Typ (xyz) unter der Liste der Registrierte Dateitypen an und klicken auf "Erweitert".
3) Im folgenden Fenster markieren wir die "open" Aktion und klicken auf "Bearbeiten".
4) Im Textfeld "Anwendung für diesen Vorgang" geben wir dann beispielsweise:
"C:\Programme\Java\jre1.6.0\bin\javaw.exe" -jar "c:\test.jar" %1 %*
an.

Tom, diese Einstellungen die du beschrieben hast, tuen bestimmt irgendwelche Einträge in die Registry vornehmen. Werd mal schauen ob ich die Werte in der Registry finde. Dann könnte ich bei der Installation per Batch einfach diese Einstellungen direkt in die registry schreiben.

Vg Erdal
 
Hallo,

habe nun folgende .reg Datei erstellt. (Danke, javaprogger1987)

Code:
REGEDIT4
 
[HKEY_CLASSES_ROOT\.text]
@="textfile"
 
[HKEY_CLASSES_ROOT\textfile]
[HKEY_CLASSES_ROOT\textfile\DefaultIcon]
@="C:\\Programme\\Qalem\\Notepad\\icon.ico"
 
[HKEY_CLASSES_ROOT\textfile\shell]
[HKEY_CLASSES_ROOT\textfile\shell\open]
[HKEY_CLASSES_ROOT\textfile\shell\open\command]
@="\"C:\\Programme\\Java\\jre1.5.0_04\\bin\\javaw.exe\" -jar \"C:\\Programme\\Qalem\\Notepad\\Notepad.jar\" \"%1\""

Ergebnis:
Die Icon-Zuweisung funktioniert.
Die Javaanwendung startet auf Doppelklick auf das gewünschte Dateiformat.
Es erscheint kein störendes CMD-Fenster.
Allerdings werden die Bilder aus dem Programmordner in der Anwendung nicht mehr angezeigt. Es scheint, das die Jar-Anwendung nicht mehr auf die Ressourcen zugreifen kann.

Mir fällt jetzt spontan nur folgendes ein: Sämtliche Bilder und die Konfigurationsdatei des Programms auch mit in die Jar einpacken.

Hat jemand ne andere bessere Idee wie man das lösen könnte?

@JavaProgger1987
Habe aus einem älteren Thread dein Beispiel als Basis genommen. Eins verstehe ich hier nicht. Wieso tut man diese miterstellen aber keine Werte zuweisen?
[HKEY_CLASSES_ROOT\textfile]
[HKEY_CLASSES_ROOT\textfile\shell]
[HKEY_CLASSES_ROOT\textfile\shell\open]

Vg Erdal
 
Ich meine, das ich keine externe Bibliothek hierfür verwenden, sondern die Einstellungen selber in der Registry vornehmen möchte. Die Regdatei die ich angegeben habe funktioniert ja soweit, es fehlt halt nur noch eine Kleinigkeit. Die jar-Anwendung findet die Ressourcen nicht mehr.
 
Hier jetzt einmal ein konkretes Beispiel:

Eine Classdatei welche eine JFrame mit einem icon öffnet.

Code:
import javax.swing.ImageIcon;
import javax.swing.JFrame;

public class Test extends JFrame {
	
	public Test() {
		setIconImage(new ImageIcon("icon.gif").getImage());
		setSize(200,300);
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setVisible(true);
	}

	public static void main(String[] args) {
		Test test = new Test();
	}
}

Diese habe ich in eine jar gepackt mit dem Namen Fenster.jar.

Fenster.jar enthällt folgende manifestdatei:

Code:
Manifest-Version: 1.0
Created-By: 1.5.0 (Sun Microsystems Inc.)
Main-Class: Test

Dann habe ich eine batchdatei batch.bat mit diesem Inhalt erstellt:
Code:
start javaw -jar C:\Fenster.jar

Die absoluten Pfade für die Dateien:
C:\Fenster.jar
C:\icon.gif
C:\bat\batch.bat
C:\batch.bat

Doppelklicke ich nun auf die Datei C:\batch.bat öffnet sich das JFrame, das Icon wird angezeigt.
Tue ich aber mit C:\bat\batch.bat das JFrame öffnen fehlt das Icon.
D.h., wenn die batchdatei sich im gleichen ordner wie die jar und das icon befinden wird das icon angezeigt. Befindet sich die batchdatei an einem anderen Ort, öffnet sich zwar das JFrame aber die anderen Ressourcen fehlen - hier wird also das Icon nicht angezeigt.

Eben genau das gleiche Problem habe ich auch, wenn ich die zuvor genannten Einträge in die Registry mache.

Vg Erdal
 
Herzlichen Dank Matthias,

es funktioniert! Das ist schon mal ein riesen Fortschritt.

Ich würde das gerne - wenn möglich - auf die Registryvariante übertragen.

Wie könnte ich den folgenden Eintrag entsprechend modifizieren?
Code:
[HKEY_CLASSES_ROOT\textfile\shell\open\command]
@="\"C:\\Programme\\Java\\jre1.5.0_04\\bin\\javaw.exe\" -jar \"C:\\Programme\\Qalem\\Notepad\\Notepad.jar\" \"%1\""

Da der Parameter /d zu cmd gehört, kann ich das oben nicht einbringen.

Die Lösung müsste dann vielleicht so etwas sein wie, dass ich zuerst cmd.exe aufrufe. Danach analog zuvor Notepad.jar über start und die restlichen Parameter starte. Es wird aber nur das cmd gestartet, der Rest nicht ausgeführt wenn ich das folgende in die Registry eintrage.

cmd.exe /DC:\ start javaw -jar Notepad.jar

Vg Erdal
 

Neue Beiträge

Zurück