У меня есть JAR файл, содержащий приложение Java. Как я могу начать работу с Windows, не требуя взаимодействия с пользователем?
Запустить приложение Java при запуске Windows
Ответ 1
Создайте .bat файл и поместите его внутри:
javaw -Xmx200m -jar C:\Path\to\jarfile\TheJar.jar
Затем поместите файл .bat в папку автозагрузки Windows.
Еще одна вещь: существует разница между использованием java и javaw. Хотя java лучше, когда вы отлаживаете приложение, приложение печатает текст или что-то в этом роде, javaw лучше, когда вам это не нужно. Зачем? Поскольку java запускает java-программу, используя консоль, которая отображает все эти печати приложений (println, exception stacktraces и т.д.), А javaw не запускается на консоли.
Ответ 2
Ответ на этот вопрос может удовлетворить ваши потребности. Настройте приложение Java для запуска в качестве службы Windows, и вам должно быть хорошо.
Ответ 3
это просто, поскольку вам нужно добавить ярлык в
Windows 7
C:\users\All Users\Start Menu\Programs\Startup
(Admin) или User home directory(%userProfile%)
Windows 10:
В Run shell:startup
в нем свойство → ярлык → target → java.exe -jar D:\..\runJar.jar
ПРИМЕЧАНИЕ. Это будет работать только после входа в систему
С правом администратора
sc create serviceName binpath= "java.exe -jar D:\..\runJar.jar"
Создает службу Windows
если вы используете таймаут, используйте 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
Создайте строку с именем и контуром, используя указанную команду
Ответ 4
Ха-ха... легко! от запуска (u может нажать start + r) написать regedit тогда: HKey локальная машина- > программное обеспечение- > microsoft- > windows- > текущая версия → run нажмите на него, а на другой панели нажмите "Ничего не нажимайте" и выберите add → string value Назовите его java дважды щелкните его и введите значение следующим образом: 'javaw -Xmx200m -jar C:\Path\to\jarfile\TheJar.jar' Надеюсь, что я могу помочь тебе ^ _ ^
Ответ 5
Если вы хотите сделать это программно с 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");
Ответ 6
Чтобы создать сервис из любого исполняемого файла 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
и снова выполните шаги.
Посетите графический интерфейс пользователя services.msc
и убедитесь, что служба procexp.exe
действительно запущена.
См. также: создание службы с помощью sc.exe; как передать параметры контекста
ПРИМЕЧАНИЕ Все задействованные инструменты официальные Microsoft!!!
Ответ 7
Если вы не готовы самостоятельно настраивать конфигурацию или хотите иметь одинаковые функции на многоуровневых компьютерах, вы можете использовать Advanced Installer. Вы можете установить банки в Windows и установить параметры, запускающие вашу программу при запуске
Ответ 8
Используйте "winsw" - http://kenai.com/projects/winsw - который был написан для Glassfish v3, но хорошо работает с программами Java в целом.
Требовать выполнения среды выполнения .NET.