2

Я новичок в создании пользовательских схем 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 ответа2

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.

1

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

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

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

Run, hello.jar, %A_ScriptDir%

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .