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?
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.
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
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.
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 ^ _ ^
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
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 !!!
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.