it-swarm.com.de

Führen Sie die Java-Anwendung beim Start von Windows aus

Ich habe eine JAR-Datei, die eine Java-Anwendung enthält. Wie kann ich es mit Windows beginnen lassen, ohne dass eine Benutzerinteraktion erforderlich ist?

34
shan

Erstellen Sie eine .bat-Datei und fügen Sie diese ein:

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

Dann legen Sie die .bat-Datei in den Windows-Startordner.

Noch etwas: Es gibt einen Unterschied zwischen der Verwendung von Java und Javaw . Während Java besser ist, wenn Sie eine Anwendung debuggen, druckt die Anwendung Text oder ähnliches. javaw ist besser, wenn Sie dies nicht benötigen. Warum? Weil Java das Java-Programm unter Verwendung einer Konsole ausführt, die alle Anwendungsdrucke der Anwendung (println, Ausnahme-Stacktraces usw.) anzeigt, während javaw nicht auf der Konsole ausgeführt wird.

34
MikeKusold

es ist einfach, da Sie eine Verknüpfung einfügen müssen 

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

Windows 10: In Ausführung Shell:startup

in seiner Eigenschaft -> Verknüpfung -> Ziel -> Java.exe -jar D:\..\runJar.jar

HINWEIS: Dies wird nur ausgeführt, nachdem Sie sich angemeldet haben.


Mit Administratorrecht

sc create serviceName binpath= "Java.exe -jar D:\..\runJar.jar" Erstellt einen Windows-Dienst

wenn Sie timeout erhalten, verwenden Sie cmd /c D:\Java7~1\jdk1.7.0_51\bin\Java.exe -jar d:\jenkins\jenkins.war, aber auch hier erhalten Sie Timeout. Im Hintergrund wird jedoch Java.exe gestartet. Überprüfen Sie im Task-Manager


In einem eingeschränkten Umfeld wie in einem Unternehmensumfeld

ERROR:

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

In diesem Fall

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

Dies führt zu einem Fehler, wenn Sie manuell ausführen, jedoch im Hintergrund.

HINWEIS: Dies wird beim Start der Windows-Anmeldung ausgeführt (vor der Anmeldung, basierend auf Dienst 'Startup Type').

Detaillierte Erklärung zum Erstellen von Windows-Diensten


Regedit

Hinweis: Nur erweiterten Benutzer bearbeiten

Nur für aktuellen Benutzer ausführen

HKEY_CURRENT_USER/SOFTWARE/Microsoft/WINDOWS/CURRENT_VERSION/RUN

Für alle Benutzer ausführen

hkey_local_machine/SOFTWARE/Microsoft/WINDOWS/CURRENT_VERSION/RUN

Erstellen Sie einen String mit Name und Pfad mit dem obigen Befehl

16
Ravi Parekh

Die Antwort auf diese Frage könnte Ihren Bedürfnissen entsprechen. Richten Sie Ihre Java-Anwendung so ein, dass sie als Windows-Dienst ausgeführt werden kann.

13
Stefan Kendall

Haha ... easy! Von Run (Sie können Start + R drücken) Schreiben Sie Regedit Dann: HKey Local Machine-> Software-> Microsoft-> ​​Windows-> Aktuelle Version -> Run .__ Klicken Sie darauf und klicken Sie mit der rechten Maustaste auf nichts und wählen Sie add -> string valuename es Java Doppelklicken Sie darauf und geben Sie den Wert wie folgt ein: .__ -jar C:\Pfad\nach\jarfile\TheJar.jar ' Hoffe, ich könnte dir helfen ^ _ ^

7
user3379482

Wenn Sie programmgesteuert von Java aus arbeiten möchten, können Sie direkt in den Startordner der Windows-Registrierung schreiben.

Hier ist ein Link, wie programmgesteuert in die Windows-Registrierung geschrieben wird.

wenn Sie eine Funktion implementiert haben, um mit der Registrierung zu arbeiten, müssen Sie einfach diesen Code ausführen

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

dabei muss value für den Befehl befehl sein, was Ihre Anwendung wie Java -jar myJar.jar ausführt

um es von autorun einfach zu entfernen 

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

UPDATE

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

Um einen Dienst aus einer beliebigen ausführbaren Datei zu erstellen, verwenden Sie srvany.exe aus Windows Resource Kits 2003 (achten Sie auf Leerzeichen nach =) ::

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"

Dann übergeben Sie, was srvany.exe-Wrapper tun wird:

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"

Oben sehen Sie Anführungszeichen für Leerzeichen. Nächster Startservice mit:

cmd> sc start NAME

Wenn Sie einen Fehler machen, überprüfen Sie Ihre Einstellungen mit:

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

und Dienst entfernen:

cmd> sc delete NAME

und wieder Schritte machen.

Besuchen Sie die GUI services.msc und prüfen Sie, ob der procexp.exe-Dienst tatsächlich gestartet ist.

Siehe auch: Erstellen eines Dienstes mit sc.exe; wie man Kontextparameter übergibt

NOTE Alle beteiligten Instrumente sind offizielles Microsoft !!!

2
gavenkoa

Wenn Sie nicht bereit sind, die Konfiguration selbst durchzuführen, oder wenn Sie dieselbe Funktionalität auf Computern mit mehreren Computern wünschen, können Sie Advanced Installer verwenden. Sie können JAR-Pakete verpacken, die unter Windows installiert werden, und Parameter festlegen, mit denen Ihr Programm beim Start ausgeführt wird

0
Yanki Twizzy