Запустите приложение Java при запуске Windows - PullRequest
38 голосов
/ 10 мая 2011

У меня есть JAR-файл, содержащий приложение Java.Как я могу запустить его с Windows, без необходимости взаимодействия с пользователем?

Ответы [ 8 ]

37 голосов
/ 10 мая 2011

Создайте файл .bat и поместите его внутрь:

javaw -Xmx200m -jar C:\Path\to\jarfile\TheJar.jar

Затем поместите файл .bat в папку автозагрузки Windows.

ОдинЕще одна вещь: есть разница между использованием java и javaw .Хотя java лучше при отладке приложения, приложение печатает текст или что-то в этом роде, javaw лучше, когда вам это не нужно.Зачем?Потому что java запускает программу java с помощью консоли, которая показывает все эти распечатки приложения (println's, трассировки стека исключений и т. Д.), В то время как javaw не работает на консоли.

17 голосов
/ 10 августа 2011

это просто, так как вы должны поместить ярлык в

Windows 7 C:\users\All Users\Start Menu\Programs\Startup (Admin) или User home directory(%userProfile%)

Windows 10: При запуске shell:startup

в его свойстве -> ярлык -> цель -> java.exe -jar D:\..\runJar.jar

ПРИМЕЧАНИЕ. Это будет выполняться только после входа в систему


с правами администратора

sc create serviceName binpath= "java.exe -jar D:\..\runJar.jar" Создаст службу Windows

, если вы получите timeout , используйте cmd /c D:\JAVA7~1\jdk1.7.0_51\bin\java.exe -jar d:\jenkins\jenkins.war, но дажес этим вы получите таймаут, но в фоновом режиме будет запущен java.exe.Проверьте в диспетчере задач


В некоторых ограниченных средах, как в корпоративной среде

ОШИБКА:

The service did not respond to the start or control request in a timely fashion

В этом случае

cmd /c D:\JAVA7~1\jdk1.7.0_51\bin\java.exe -jar d:\jenkins\jenkins.war

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

ПРИМЕЧАНИЕ.при входе в Windows (до входа в систему, на основе услуги 'Startup Type')

Подробное описание создания службы Windows


Regedit

Примечание. Редактировать только для опытных пользователей

Для запуска только для текущего пользователя

HKEY_CURRENT_USER/SOFTWARE/MICROSOFT/WINDOWS/CURRENT_VERSION/RUN

для запуска для всех пользователей

hkey_local_machine/SOFTWARE/MICROSOFT/WINDOWS/CURRENT_VERSION/RUN

Создать строку с именем и путем, используя указанную выше команду

13 голосов
/ 10 мая 2011

Ответ на этот вопрос может удовлетворить ваши потребности.Настройте Java-приложение для запуска в качестве службы Windows, и вы должны быть в порядке.

7 голосов
/ 30 апреля 2014

Ха-ха ... легко!из запуска (вы можете нажать start + r) написать regedit, затем: HKey локальная машина-> программное обеспечение-> microsoft-> ​​windows-> текущая версия -> запустить щелкните по нему, а на другой панели щелкните правой кнопкой мыши ничего и выберите добавить -> строковое значение, назовите его java, дважды щелкните его и укажите его значение следующим образом: 'javaw -Xmx200m -jar C: \ Path \ to \ jarfile \ TheJar.jar' Надеюсь, что я смогу вам помочь ^ _ ^

6 голосов
/ 12 сентября 2015

Если вы хотите сделать это программно из Java, вы можете написать прямо в папку запуска реестра Windows.

Здесь - ссылка о том, как программно записать в реестр Windows.

когда вы реализовали функцию для работы с реестром, вам нужно просто запустить этот код

String value = "\"javaw -jar " + System.getProperty("user.dir") + "\\myJar.jar\"";
WinRegistry.writeStringValue(WinRegistry.HKEY_CURRENT_USER, "Software\\Microsoft\\Windows\\CurrentVersion\\Run", "myJar autorun key", value);

где значение ключа должно быть командой, которая запускает ваше приложение, например java -jar myJar.jar

чтобы удалить его из автозапуска вы просто

WinRegistry.deleteValue(WinRegistry.HKEY_CURRENT_USER, "Software\\Microsoft\\Windows\\CurrentVersion\\Run", "myJar autorun key");

UPDATE

Replace WinRegistry.writeStringValue with WinRegistry.setStringValue recent version of java 1.8.x
2 голосов
/ 09 января 2015

Для создания сервиса из любого исполняемого файла используйте srvany.exe из Windows Resource Kits 2003 (обратите внимание на пробелы после =) ::

cmd> sc create NAME binPath= "c:\Program Files\Windows Resource Kits\Tools\srvany.exe" ^
   type= own start= auto error= normal DisplayName= "NAME for services.msc"

Затем передайте то, что сделает srvany.exe оболочка:

cmd> reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\NAME\Parameters" ^
     /v "Application" ^
     /d "\"c:\Program Files\Java\jre7\bin\java.exe\" -cp c:\home\devel\service Main"

Выше вы видите синтаксис цитирования для пробелов. Следующий запуск сервиса с:

cmd> sc start NAME

Если вы допустили ошибку, проверьте настройки:

cmd> reg query "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\NAME" /s

и удалить услугу:

cmd> sc delete NAME

и повторите шаги.

Посетите GUI services.msc и проверьте, действительно ли запущен сервис procexp.exe.

См. Также: создание службы с помощью sc.exe; как передать в контекст параметры

ПРИМЕЧАНИЕ Все задействованные инструменты - официальный Microsoft !!!

0 голосов
/ 09 января 2015

Если вы не готовы выполнить настройку самостоятельно или если вы хотите использовать те же функции на нескольких компьютерах, вы можете использовать Advanced Installer . Вы можете упаковать файлы jar для установки в Windows и установить параметры, которые будут запускать вашу программу при запуске

0 голосов
/ 10 мая 2011

Используйте "winsw" - http://kenai.com/projects/winsw - который был написан для Glassfish v3, но в целом хорошо работает с программами на Java.

Требуется установленная среда выполнения .NET.

...