Erstellen Sie eine URI-Schema-Handler-Zuordnung

3110
user182944

Ich bin neu in der Erstellung von benutzerdefinierten URI-Schemata und versuche, eine ausführbare JAR-Datei mithilfe von URI-Schemata in meinem Windows 7-System zu starten.

Um diese JAR-Datei von der Eingabeaufforderung aus auszuführen, verwende ich diesen Befehl:

java -jar demo.jar

BEARBEITEN:

Für den Start mit dem benutzerdefinierten URI-Schema habe ich eine .regDatei mit dem folgenden Eintrag erstellt ( aus dem folgenden Beitrag kopiert ):

Windows Registry Editor Version 5.00  [HKEY_CLASSES_ROOT\DemoStart] "URL Protocol"=""  [HKEY_CLASSES_ROOT\DemoStart\shell]  [HKEY_CLASSES_ROOT\DemoStart\shell\open]  [HKEY_CLASSES_ROOT\DemoStart\shell\open\command] @="\"java.exe\" -jar \"C:\\Users\\John\\Desktop\\demo.jar\"" 

Dies funktioniert aus folgendem Grund nicht:

Die ausführbare JAR-Datei, die ich für den Lauf benutze, demo.jarist eine von einem Drittanbieter bereitgestellte JAR-Datei. Sie hat einige Abhängigkeiten von XML-Konfigurationsdateien, die sich ebenfalls im selben Ordner befinden, in dem sich die JAR-Datei befindet. Ich habe nicht das Recht, in der JAR-Datei vorhandenen Code zu ändern.

Über die Eingabeaufforderung "java.exe" -jar "demo.jar"funktioniert der Befehl nur, wenn ich zu dem Ordner navigiere, der sowohl den demo.jarals auch den enthält dependent config xml files. ABER wenn ich versuche, den Befehl auszuführen: "java.exe" -jar "C:\Users\John\Desktop\demo.jar"Vom Standardspeicherort des Eingabeaufforderungsfensters (das in meinem Fall ist C:\Users\John) funktioniert der Befehl nicht, da die abhängigen Konfigurations-XML-Dateien nicht verfügbar sind.

Daher muss ich vor dem Ausführen der JAR-Datei einen Weg finden, den Standardspeicherort der Eingabeaufforderung zu ändern.

Bitte schlagen Sie vor, ob es möglich ist, den Standardspeicherort der Eingabeaufforderung festzulegen, C:\Users\John\Desktopwenn ich den benutzerdefinierten URI auslöst (In diesem Fall müssen Sie nicht zu einem anderen Speicherort navigieren und der Befehl sollte problemlos funktionieren).

2
Ich habe eine `.txt`-Datei erstellt, die Dateierweiterung in` .reg` geändert, den unten angegebenen Code eingefügt und dann die `.reg`-Datei doppelt angeklickt, um den Registrierungseintrag zu erstellen. Dann habe ich dasselbe im "regedit" verifiziert. user182944 vor 9 Jahren 0

2 Antworten auf die Frage

2
lzam

Ihre .regDatei sieht nicht richtig aus. Das Format ist sehr seltsam. Es sollte ungefähr so ​​aussehen:

Windows Registry Editor Version 5.00  [HKEY_CLASSES_ROOT\DemoStart] "URL Protocol"=""  [HKEY_CLASSES_ROOT\DemoStart\shell]  [HKEY_CLASSES_ROOT\DemoStart\shell\open]  [HKEY_CLASSES_ROOT\DemoStart\shell\open\command] @="\"java.exe\" -jar \"C:\\Users\\John\\Desktop\\demo.jar\"" 

Wenn dies immer noch nicht funktioniert, überprüfen Sie noch einmal, ob Java in Ihrem PFAD ist. Wenn dies der Fall ist und immer noch nicht funktioniert, ersetzen Sie "java" durch den vollständigen Pfad zum Java-Exe.

Das kann auch nicht funktionieren, weil die URL niemals an das Programm übergeben wird. "% 1" `sollte an der entsprechenden Stelle angezeigt werden. Verwenden Sie auch immer absolute Pfade, ansonsten fragen Sie nur nach Problemen. / edit: Oh ja, und es kann auch ratsam sein, einen Namen anzugeben ("@" neben "URL Protocol"). Daniel B vor 9 Jahren 1
Das ist nicht das, was ich meinte. Ich bezog mich auf den "freundlichen Namen". Es ist der Standardeintrag * neben * `URL Protocol`. Sie können es in den meisten Einträgen in `HKCR` sehen. Ich werde später eine eigene Antwort posten. Daniel B vor 9 Jahren 0
@Izam +1 für die bisherige Hilfe. Wenn ich die `Eingabeaufforderung` öffne, lautet der Standardspeicherort` C: \ Users \ John`. Wenn ich in der Eingabeaufforderung manuell zum Speicherort "C: \ Users \ John \ Desktop" navigiere und den Befehl "" java.exe "-jar" demo.jar "` ausführe, funktioniert es einwandfrei. Wenn ich aber nicht zum `Desktop` navigiere und diesen Befehl` "java.exe" -jar "C: \ Users \ John \ Desktop \ demo.jar" `` aus dem Standardverzeichnis (dh C: \ Users) ausführen \ John`) dann funktioniert es nicht, da ich in Desktop einige andere XML-Dateien habe, die zum Ausführen der JAR-Datei benötigt werden. user182944 vor 9 Jahren 0
Ok, ich habe einige Änderungen in Bezug auf die Anwendung vorgenommen und diese Funktion endlich zum Laufen gebracht. Daher akzeptiere ich diese Antwort. user182944 vor 9 Jahren 0
1
Daniel B

Aus dem, was ich herausfinde, ist Ihr Hauptproblem nicht die tatsächliche Dateizuordnung, sondern das Arbeitsverzeichnis. Leider kann das Arbeitsverzeichnis nicht beeinflusst werden, wenn es von einer Dateizuordnung gestartet wird. Wenn ein Programm neben seiner ausführbaren Datei von Dateien abhängt, wäre es konstruktionsbedingt defekt, wenn es auf das Arbeitsverzeichnis angewiesen wäre.

Zum Glück ist das Programmieren nicht mehr nur für Experten. ;)

Das folgende einzeilige AutoHotkey- Skript (das zu einer eigenständigen .exeDatei kompiliert werden kann) startet ein Programm (oder eine .jarDatei oder was auch immer). Das Arbeitsverzeichnis wird auf das Skriptverzeichnis gesetzt .exe.

Run, hello.jar, %A_ScriptDir% 

Ich habe das eigentlich nicht mit einer .jarDatei getestet, weil ich JDK momentan nicht installiert habe. Ich habe es jedoch mit einem nicht kompilierten AutoHotkey-Skript versucht. Dokumentation zum RunBefehl ist hier verfügbar .

Ich habe folgende Schritte ausgeführt: Eine `.ahk`-Datei erstellt, der Eintrag` #z :: Run, demp.jar,% A_ScriptDir% `in der Datei` Run Script` hinzugefügt und dann zum Starten auf `Windows Key + z` geklickt die "demo.jar", alles funktionierte gut für mich. Ich möchte meine Benutzer jedoch nicht auffordern, den AutoHot-Schlüssel manuell anzuklicken. Daher ist der Wille, diesen Vorgang so zu automatisieren, dass Folgendes erreicht wird: Wenn der Browser gestartet wird, wird die `demo.jar` automatisch ausgeführt. Bitte schlagen Sie etwas dazu vor. user182944 vor 9 Jahren 0
Sie müssen das AHK-Skript (oder ".exe") mit dem Protokoll anstelle von "java.exe" verknüpfen. Daniel B vor 9 Jahren 0