错误 运行 SpringBoot Jar 使用 init.d
Error Running SpringBoot Jar using init.d
我有一个 SpringBoot 应用程序,我使用 gradle :myapp:jar
生成一个可执行 jar。此外,我还必须使用 chmod 755 myapp.jar
使 jar 可执行。
这是生成 jar 的 gradle 代码,as described here:
springBoot{
可执行=真
}
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) }
}
}
然后我创建一个指向 init.d、as described here 的符号链接以便使用 start/stop/status。我执行的创建符号链接的命令是这样的:
sudo ln -fs myjar.jar /etc/init.d/myjar
之后,我可以做:
sudo /etc/init.d/myapp start
问题是,当我执行这个命令时,出现以下错误:
/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
网上查了一下,it appears to be related to a shebang issue,在文件开头加上#!/bin/bash
即可解决。但是,由于我是 运行 由 gradle
生成的 .jar
, 我需要在哪里添加此行?或者,我该如何解决上述错误?
sudo ln -fs myjar.jar /etc/init.d/myjar
我认为您需要为源代码使用完整路径(即 /your/full/path/to/myjar.jar)
jar
任务不会生成适合通过 init.d 启动的完全可执行的 jar。相反,您需要 运行 Spring Boot 的 Gradle 插件提供的 bootRepackage
任务,并且您还需要配置它以生成完全可执行的 jar。为此,请将以下内容添加到您的 build.gradle
:
springBoot {
executable = true
}
通过命令行执行应用程序的方法之一。
当您有 apply plugin:'java'
时,spring 会查找 bootJar 并默认禁用 Jar 任务。
为了构建完全可执行的 jar,您可以包含此代码
bootJar {
启动脚本()
}
然后清理您的构建和 运行 bootJar 任务一次。稍后导航到 gradle 文件夹和 运行
./gradlew bootRun
这 运行 是您的 spring-boot 应用程序。我认为还有很多其他方式,例如 java -jar <yourapplication.jar>
。但我遵循这种方式。希望对你有帮助。
我有一个 SpringBoot 应用程序,我使用 gradle :myapp:jar
生成一个可执行 jar。此外,我还必须使用 chmod 755 myapp.jar
使 jar 可执行。
这是生成 jar 的 gradle 代码,as described here:
springBoot{ 可执行=真 }
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) }
}
}
然后我创建一个指向 init.d、as described here 的符号链接以便使用 start/stop/status。我执行的创建符号链接的命令是这样的:
sudo ln -fs myjar.jar /etc/init.d/myjar
之后,我可以做:
sudo /etc/init.d/myapp start
问题是,当我执行这个命令时,出现以下错误:
/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
网上查了一下,it appears to be related to a shebang issue,在文件开头加上#!/bin/bash
即可解决。但是,由于我是 运行 由 gradle
生成的 .jar
, 我需要在哪里添加此行?或者,我该如何解决上述错误?
sudo ln -fs myjar.jar /etc/init.d/myjar
我认为您需要为源代码使用完整路径(即 /your/full/path/to/myjar.jar)
jar
任务不会生成适合通过 init.d 启动的完全可执行的 jar。相反,您需要 运行 Spring Boot 的 Gradle 插件提供的 bootRepackage
任务,并且您还需要配置它以生成完全可执行的 jar。为此,请将以下内容添加到您的 build.gradle
:
springBoot {
executable = true
}
通过命令行执行应用程序的方法之一。
当您有
apply plugin:'java'
时,spring 会查找 bootJar 并默认禁用 Jar 任务。为了构建完全可执行的 jar,您可以包含此代码
bootJar {
启动脚本() }
然后清理您的构建和 运行 bootJar 任务一次。稍后导航到 gradle 文件夹和 运行
./gradlew bootRun
这 运行 是您的 spring-boot 应用程序。我认为还有很多其他方式,例如 java -jar <yourapplication.jar>
。但我遵循这种方式。希望对你有帮助。