Esegui l’applicazione Java all’avvio di Windows

Ho un file JAR contenente un’applicazione Java. Come posso iniziare con Windows, senza bisogno di interazione con l’utente?

Crea un file .bat e mettilo dentro:

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

Quindi inserisci il file .bat nella cartella di avvio di Windows.

Un’altra cosa: c’è una differenza tra l’utilizzo di java e javaw . Mentre java è meglio quando esegui il debug di un’applicazione, l’applicazione stampa il testo o qualcosa del genere, javaw è migliore quando non ne hai bisogno. Perché? Poiché java esegue il programma java utilizzando una console che mostra tutte le stampe dell’applicazione (println, eccezioni di stacktraces e così via) mentre javaw non viene eseguito su console.

è semplice come devi mettere scorciatoia

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

Windows 10: In Run shell:startup

nella sua proprietà -> scorciatoia -> destinazione -> java.exe -jar D:\..\runJar.jar

NOTA: questo verrà eseguito solo dopo aver effettuato l’accesso


Con Admin Right

sc create serviceName binpath= "java.exe -jar D:\..\runJar.jar" servizio Windows

se si ottiene il timeout utilizzare cmd /c D:\JAVA7~1\jdk1.7.0_51\bin\java.exe -jar d:\jenkins\jenkins.war ma anche con questo si otterrà il timeout ma in background java.exe sarà avviato. Controlla nel task manager


In un ambiente ristretto come lo ero nell’ambiente aziendale

ERRORE:

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

In questo caso

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

Questo ti darà un errore se corri manualmente ma verrà eseguito in background.

NOTA: verrà eseguito all’avvio del logon di Windows (prima dell’ingresso, in base al servizio ” Startup Type “)

Spiegazione dettagliata della creazione del servizio di Windows


regedit

Nota: solo Modifica utente avanzato

Eseguire solo per l’utente corrente

 HKEY_CURRENT_USER/SOFTWARE/MICROSOFT/WINDOWS/CURRENT_VERSION/RUN 

Eseguire per tutti gli utenti

 hkey_local_machine/SOFTWARE/MICROSOFT/WINDOWS/CURRENT_VERSION/RUN 

Crea una stringa con nome e percorso utilizzando il comando precedente

La risposta a questa domanda potrebbe soddisfare le tue esigenze. Imposta la tua applicazione java per funzionare come un servizio di Windows e dovresti essere bravo a farlo.

Haha … facile! da run (puoi premere start + r) scrivere regedit poi: HKey local machine-> software-> microsoft-> ​​windows-> current version -> esegui click su di esso e nell’altro pannello scrivi click su nothing e scegli add -> stringa valore name it java fai doppio click e metti il ​​suo valore come segue: ‘javaw -Xmx200m -jar C: \ Path \ to \ jarfile \ TheJar.jar’ Spero di poterti aiutare ^ _ ^

Se vuoi farlo a livello di programmazione da Java, puoi scrivere direttamente nella cartella di avvio del registro di Windows.

Ecco il link su come scrivere nel registro di Windows a livello di programmazione.

quando hai implementato la funzione per lavorare con il registro di quello che ti serve è sufficiente eseguire questo codice

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

dove il valore per la chiave deve essere il comando che esegue la tua applicazione come java -jar myJar.jar

per rimuoverlo da autorun semplicemente

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

AGGIORNARE

 Replace WinRegistry.writeStringValue with WinRegistry.setStringValue recent version of java 1.8.x 

Per creare un servizio da qualsiasi eseguibile utilizzare srvany.exe da Resource Kit di Windows 2003 (prestare attenzione agli spazi dopo = ) ::

 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" 

Quindi passa ciò che farà il wrapper 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" 

Sopra vedi la citazione della syntax per gli spazi. Prossimo avvio del servizio con:

 cmd> sc start NAME 

Se si commette un errore ricontrollare le impostazioni con:

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

e rimuovere il servizio:

 cmd> sc delete NAME 

e fare di nuovo dei passi.

Visita GUI services.msc e verifica che il servizio procexp.exe effettivamente avviato.

Vedi anche: creazione di un servizio con sc.exe; come passare in parametri di contesto

NOTA Tutti gli strumenti coinvolti sono ufficiali Microsoft !!!

Se non si è pronti per eseguire la configurazione da soli o se si desidera la stessa funzionalità su computer multile, è ansible utilizzare Advanced Installer . È ansible impacchettare i jar da installare su Windows e impostare i parametri che eseguiranno il programma all’avvio

Usa “winsw” – http://kenai.com/projects/winsw – che è stato scritto per Glassfish v3 ma funziona bene con i programmi Java in generale.

Richiede il runtime .NET installato.