Создать ассоциацию обработчика схемы 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
Команда доступна здесь.