2016-04-26 8 views
1

Ich habe eine SpringBoot-Anwendung, für die ich gradle :myapp:jar verwenden, um eine ausführbare jar zu generieren. Außerdem musste ich chmod 755 myapp.jar verwenden, um das jar ausführbar zu machen.Fehler beim Ausführen von SpringBoot Jar mit init.d

Dies ist der gradle Code für das Glas zu erzeugen, as described here:

springBoot { ausführbare = true }

springBoot { 
    executable = true 
} 

jar { 
    baseName = 'myapp' 
    version = '0.1.0' 
    manifest { 
     attributes "Main-Class": "eu.myapp.Application" 
    } 

    from { 
     configurations.compile.collect { it.isDirectory() ? it : zipTree(it) } 
    } 
} 

ich dann einen symbolischen Link erstellen, um Init.d, as described here zu verwenden, um Start/Stopp/Status. Der Befehl, den ich den Symlink erstellen bin Ausführung ist dies:

sudo ln -fs myjar.jar /etc/init.d/myjar 

Danach kann ich tun:

sudo /etc/init.d/myapp start 

Das Problem ist, dass, wenn ich diesen Befehl ausführen, ich die folgende Fehlermeldung erhalten:

/etc/init.d/myapp: 1: /etc/init.d/myapp: PK: not found 
/etc/init.d/myapp: 2: /etc/init.d/myapp�z�H: not found 
/etc/init.d/myapp: 3: /etc/init.d/myapp: Syntax error: ")" unexpected 

sucht es online auf, it appears to be related to a shebang issue, die durch Zugabe von #!/bin/bash am Anfang der Datei festgelegt werden kann. Wie auch immer, da ich eine .jar erzeugt von gradle, wo soll ich diese Zeile hinzufügen? Alternativ, wie kann ich den obigen Fehler beheben?

Antwort

4

Die jar Aufgabe wird nicht vollständig ausführbare produzieren Jar geeignet für den Start über init.d. Stattdessen müssen Sie die Aufgabe ausführen, die von Spring Boot's Gradle-Plugin zur Verfügung gestellt wird, und Sie müssen es auch konfiguriert haben, um eine vollständig ausführbare JAR-Datei zu erstellen. Um so zu tun, fügen Sie folgendes zu Ihrem build.gradle:

springBoot { 
    executable = true 
} 
+0

Der Befehl bootRepackage hat es geschafft, danke! In der Tat wird auch der ausführbare = wahre Teil benötigt; Ich hatte das schon, aber vergaß es zu erwähnen (jetzt aktualisiert). –

0

sudo ln -fs myjar.jar /etc/init.d/myjar

Ich glaube, Sie müssen einen vollständigen Pfad für Ihre Quelle verwenden (dh /your/full/path/to/myjar.jar)

+0

Ich kann bestätigen, dass dies nicht der Fall ist, relative Pfade funktionieren. Egal, danke für deine Zeit. –

Verwandte Themen