Создать ассоциацию обработчика схемы URI

Я новичок в создании пользовательских схем URI и пытаюсь запустить исполняемый файл JAR с использованием схем URI в моей системе Windows 7.

Для запуска этого файла JAR из командной строки, я использую эту команду:

java -jar demo.jar

РЕДАКТИРОВАТЬ:

Для запуска того же с использованием пользовательской схемы URI я создал .reg файл с записью ниже (скопировано с поста ниже):

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\""

Это не работает по следующей причине:

Исполняемый файл JAR, который я пытаюсь запустить с именем demo.jar это файл jar, предоставленный третьей стороной, и он имеет довольно много зависимостей от файлов конфигурации XML, которые также находятся в той же папке, содержащей файл jar. У меня нет прав изменять код, присутствующий в файле jar.

Используя командную строку, команда "java.exe" -jar "demo.jar" работает только когда я перехожу к папке, содержащей как demo.jar так же хорошо как dependent config xml files, НО, если я попытаюсь выполнить команду: "java.exe" -jar "C:\Users\John\Desktop\demo.jar" из расположения по умолчанию окна командной строки (которое в моем случае C:\Users\John), то команда не работает, поскольку зависимые XML-файлы конфигурации недоступны.

Следовательно, мне нужно найти способ изменить расположение командной строки по умолчанию, прежде чем выполнять файл JAR.

Подскажите, возможно ли установить в командной строке местоположение по умолчанию C:\Users\John\Desktop когда я запускаю пользовательский URI (в этом случае нет необходимости перемещаться в другое место, и команда должна работать нормально).

2 ответа

Решение

Ваш .reg файл не выглядит правильно. Формат очень странный. Это должно выглядеть примерно так:

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\""

Если это все еще не работает, дважды проверьте, что Java находится в вашем PATH. Если это так, и это все еще не работает, попробуйте заменить "java" на полный путь к Java exe.

Итак, из того, что я понял, ваша главная проблема не в фактической ассоциации файлов, а в рабочем каталоге. К сожалению, на рабочий каталог нельзя повлиять при запуске из ассоциации файлов. Если программа зависит от файлов, кроме ее исполняемого файла, она будет нарушена, если она будет полагаться на рабочий каталог.

К счастью, программирование больше не только для экспертов.;)

Следующий однострочный скрипт AutoHotkey (который может быть скомпилирован в автономный .exe файл) запускает программу (или .jar файл или что-то). В рабочем каталоге будет установлен скрипт .exe место нахождения.

Run, hello.jar, %A_ScriptDir%

Я на самом деле не проверял это с .jar файл, потому что у меня не установлен JDK прямо сейчас. Я попробовал с некомпилированным скриптом AutoHotkey. Документация на Run Команда доступна здесь.

Другие вопросы по тегам