web-dev-qa-db-fra.com

Exécuter une application Java au démarrage de Windows

J'ai un fichier JAR contenant une application Java. Comment puis-je le faire démarrer avec Windows sans avoir besoin d'interaction de l'utilisateur?

34
shan

Créez un fichier .bat et mettez-le à l'intérieur:

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

Ensuite, placez le fichier .bat dans le dossier de démarrage de Windows.

Une dernière chose: il y a une différence entre utiliser Java et javaw . Tandis que Java est préférable lorsque vous déboguez une application, celle-ci imprime du texte ou quelque chose du genre, javaw est préférable lorsque vous n’avez pas besoin de cela. Pourquoi? Parce que Java exécute le programme Java en utilisant une console qui affiche toutes les impressions de cette application (println, exceptions stacktraces, etc.) alors que javaw ne s'exécute pas sur la console.

34
MikeKusold

c'est simple car vous devez mettre un raccourci dans 

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

Windows 10: Dans Run Shell:startup

dans sa propriété -> raccourci -> cible -> Java.exe -jar D:\..\runJar.jar

NOTE: Ceci ne fonctionnera qu'après votre connexion


Avec droit d'administrateur

sc create serviceName binpath= "Java.exe -jar D:\..\runJar.jar" va créer un service Windows

si vous obtenez timeout, utilisez cmd /c D:\Java7~1\jdk1.7.0_51\bin\Java.exe -jar d:\jenkins\jenkins.war. Même avec cela, vous obtiendrez un délai d'expiration, mais en arrière-plan, Java.exe sera démarré. Archiver dans le gestionnaire de tâches


Dans un environnement restreint comme j'étais dans un environnement d'entreprise

ERREUR:

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

Dans ce cas

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

Cela vous donnera une erreur si vous exécutez manuellement, mais en arrière-plan.

NOTE: Ceci fonctionnera au démarrage de l'ouverture de session Windows (avant la connexion, selon le service 'Startup Type')

Explication détaillée de la création du service Windows


Regedit

Remarque: Éditer utilisateur avancé uniquement

À exécuter uniquement pour l'utilisateur actuel

HKEY_CURRENT_USER/SOFTWARE/Microsoft/WINDOWS/CURRENT_VERSION/RUN

À exécuter pour tous les utilisateurs

hkey_local_machine/SOFTWARE/Microsoft/WINDOWS/CURRENT_VERSION/RUN

Créer une chaîne avec un nom et un chemin en utilisant la commande ci-dessus

16
Ravi Parekh

La réponse à cette question pourrait convenir à vos besoins. Configurez votre application Java pour qu'elle s'exécute en tant que service Windows et vous devriez être prêt à partir.

13
Stefan Kendall

Haha ... facile! À partir de l'exécution (vous pouvez appuyer sur start + r) écrivez regedit Puis: HKey machine locale-> logiciel-> Microsoft-> ​​windows-> version actuelle -> exécuter cliquez dessus et dans l'autre panneau, cliquez avec le bouton droit de la souris sur rien et choisissez add -> string valuename it Java double-cliquez dessus et mettez sa valeur comme suit: 'javaw -Xmx200m -jar C:\Path\to\jarfile\TheJar.jar ' J'espère que je pourrai vous aider ^ _ ^

7
user3379482

Si vous souhaitez le faire par programme à partir de Java, vous pouvez écrire directement dans le dossier de démarrage du registre Windows.

Ici est un lien comment écrire dans le registre Windows par programme.

lorsque vous avez implémenté la fonction pour travailler avec le registre, il vous suffit d'exécuter ce code

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);

où value pour key doit être command ce qui exécute votre application comme Java -jar myJar.jar

pour l'enlever de vous autorun simplement 

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

METTRE À JOUR

Replace WinRegistry.writeStringValue with WinRegistry.setStringValue recent version of Java 1.8.x
6
Mior

Afin de créer un service à partir de n’importe quel exécutable, utilisez srvany.exe à partir de Windows Kits de ressources 2003 (remarquez les espaces après =):

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"

Puis transmettez ce que l’encapsuleur srvany.exe fera:

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"

Ci-dessus, voir la syntaxe de citation pour les espaces. Prochain démarrage du service avec:

cmd> sc start NAME

Si vous faites une erreur, vérifiez à nouveau vos paramètres avec:

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

et supprimer le service:

cmd> sc delete NAME

et refaire des pas.

Rendez-vous sur l’interface graphique services.msc et vérifiez avec le service procexp.exe réellement commencé.

Voir aussi: création d'un service avec sc.exe; comment passer en paramètres de contexte

NOTE Tous les instruments impliqués sont official Microsoft !!!

2
gavenkoa

Si vous n'êtes pas prêt à faire la configuration vous-même ou si vous voulez les mêmes fonctionnalités sur plusieurs ordinateurs, vous pouvez utiliser Advanced Installer . Vous pouvez installer les fichiers JAR à installer sur Windows et définir les paramètres qui exécuteront votre programme au démarrage.

0
Yanki Twizzy