2011-05-10 18 views

Respuesta

12

La respuesta a this question puede satisfacer sus necesidades. Configure su aplicación Java para que se ejecute como un servicio de Windows y debería estar listo para comenzar.

30

crear un archivo y poner esto en el interior:

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

a continuación, poner el archivo .bat en la carpeta de inicio de Windows.

One more thing: There's a difference between using java and javaw. While java is better when you are debugging an application, the application prints text or something like that, javaw is better when you don't need that. Why? Because java runs java program using a console that shows all that application prints (println's, exception stacktraces and so on) while javaw doesn't run on console.

+5

Esto sólo ocurre cuando el usuario inicie sesión. –

+2

toda otra forma de mantenerlo dentro de la puesta en marcha carpeta –

+0

@ ThorbjørnRavnAndersen Cuándo sería acaecer lo contrario? –

-1

Uso "winsw" - http://kenai.com/projects/winsw - que fue escrito para GlassFish v3, pero funciona bien con programas Java en general.

Requiere .NET runtime installed.

13

es simple como usted tiene que poner atajo en

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

Windows 10: En Ejecutar shell:startup

en su propiedad -> atajo -> objetivo ->java.exe -jar D:\..\runJar.jar

NOTA: Esto sólo se ejecutará después de iniciar sesión


Con administración Derecho

sc create serviceName binpath= "java.exe -jar D:\..\runJar.jar" Creará servicio de Windows

si obtiene tiempo de espera uso cmd /c D:\JAVA7~1\jdk1.7.0_51\bin\java.exe -jar d:\jenkins\jenkins.war pero incluso con este obtendrá tiempo de espera, pero en el fondo se iniciará java.exe. Llegada administrador de tareas


En algunos entorno restringido ya que estaba en el ambiente corporativo

ERROR:

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

En este caso

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

Esto le dará un error si ejecuta manualmente pero se ejecutará en segundo plano.

NOTA: Esto ejecutará en las ventanas de inicio de sesión de puesta en marcha (antes del inicio de sesión, basado en el servicio 'Startup Type')

Detailed explanation of creating windows service


Regedit

Nota: Editar usuario avanzado solo

Para ejecutar para el usuario actual Sólo

HKEY_CURRENT_USER/SOFTWARE/MICROSOFT/WINDOWS/CURRENT_VERSION/RUN 

funcionar para todos los usuarios

hkey_local_machine/SOFTWARE/MICROSOFT/WINDOWS/CURRENT_VERSION/RUN 

crear una cadena con el nombre y la ruta utilizando comando anterior

+0

'sc create' no funcionaría ya que' java.exe' no está implementado 'StartServiceCtrlDispatcher'. Consulte http://msdn.microsoft.com/en-us/library/windows/desktop/ms687416%28v=vs.85%29.aspx – gavenkoa

+0

sc create tampoco funciona para mí. – johnstosh

6

Jaja ... fácil ! desde ejecución (puede presionar start + r) escribir regedit luego: HKey máquina local-> software-> microsoft-> ​​windows-> versión actual -> ejecutar hacer clic en él y en el otro panel escribir clic en nada y elegir add -> valor de cadena nombre que java doble clic en él y poner su valor como sigue: 'javaw -Xmx200m-jar C: \ ruta \ a \ jarfile \ TheJar.jar' la esperanza de que pudiera ayudarte^_^

1

con el fin de crear el servicio de cualquier uso ejecutable srvany.exe de Windows Resource Kits 2003 (tome atención a espacios despué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" 

A continuación, pasar lo srvany.exe envoltorio hará:

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" 

Arriba se ve citando sintaxis de espacios. Junto con el servicio de inicio:

cmd> sc start NAME 

Si comete el error vuelva a comprobar los ajustes con:

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

y retire del servicio:

cmd> sc delete NAME 

y hacer pasos de nuevo.

Visita GUI services.msc y compruebe con procexp.exe el servicio realmente comienza.

Consulte también: creating a service with sc.exe; how to pass in context parameters

NOTA Todos los instrumentos involucrados es oficial de Microsoft !!!

0

Si no está listo para hacer la configuración usted mismo o si desea la misma funcionalidad en computadoras multile, entonces puede usar Advanced Installer. Puede empaquetar frascos para instalar en Windows y establecer parámetros que ejecutarán su programa al iniciar

6

Si desea hacerlo mediante programación desde Java, puede escribir directamente en la carpeta de inicio del registro de Windows.

Here es el enlace de cómo escribir en el registro de Windows mediante programación.

cuando haya función para trabajar con el registro de lo que necesita es simplemente ejecutar este código

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

donde el valor de necesidad clave para ser comando lo ejecuta la aplicación java-jar como myJar.jar

implementado

para sacarlo de ejecución automática simplemente

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

ACTUALIZACIÓN

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