Java 使用init.d运行SpringBoot Jar时出错

Java 使用init.d运行SpringBoot Jar时出错,java,gradle,jar,spring-boot,init.d,Java,Gradle,Jar,Spring Boot,Init.d,我有一个SpringBoot应用程序,我使用gradle:myapp:jar为其生成一个可执行jar。此外,我还必须使用chmod 755 myapp.jar使jar可执行 这是生成jar的gradle代码: 弹簧靴{ 可执行文件=true } 然后我创建一个到init.d的符号链接,以便使用start/stop/status。我正在执行的创建符号链接的命令如下: sudo ln -fs myjar.jar /etc/init.d/myjar 在这之后,我可以做: sudo /etc/init

我有一个SpringBoot应用程序,我使用gradle:myapp:jar为其生成一个可执行jar。此外,我还必须使用chmod 755 myapp.jar使jar可执行

这是生成jar的gradle代码:

弹簧靴{ 可执行文件=true }

然后我创建一个到init.d的符号链接,以便使用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
在线查找,可以通过添加来修复/文件开头的bin/bash。然而,由于我运行的是gradle生成的.jar,我需要在哪里添加这一行?或者,如何修复上述错误

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

我认为您需要为源代码使用完整路径,即/your/full/path/to/myjar.jar

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

我认为您需要为源代码使用完整路径,即/your/full/path/to/myjar.jar

jar任务不会生成适合通过init.d启动的完全可执行jar。相反,您需要运行SpringBoot的Gradle插件提供的bootRepackage任务,并且还需要将其配置为生成一个完全可执行的jar。为此,请将以下内容添加到build.gradle中:

jar任务不会生成适合通过init.d启动的完全可执行的jar。相反,您需要运行SpringBoot的Gradle插件提供的bootRepackage任务,并且还需要将其配置为生成一个完全可执行的jar。为此,请将以下内容添加到build.gradle中:


通过命令行执行应用程序的方法之一

当您使用apply plugin:'java'时,spring将查找bootJar并在默认情况下禁用Jar任务

为了构建完全可执行的jar,您可以包含以下代码

布特贾尔{

启动脚本 }

然后清理构建并运行bootJar任务一次。稍后导航到gradle文件夹并运行

./gradlew bootRun

这将运行您的spring boot应用程序。我认为还有很多其他方法,比如java-jar。但我是这样做的。希望能有所帮助。

通过命令行执行应用程序的方法之一

当您使用apply plugin:'java'时,spring将查找bootJar并在默认情况下禁用Jar任务

为了构建完全可执行的jar,您可以包含以下代码

布特贾尔{

启动脚本 }

然后清理构建并运行bootJar任务一次。稍后导航到gradle文件夹并运行

./gradlew bootRun

这将运行您的spring boot应用程序。我认为还有很多其他方法,比如java-jar。但我是这样做的。希望能有所帮助。

bootRepackage命令成功了,谢谢!实际上,也需要可执行=真实部分;我已经有了,但是忘了提了,现在更新了。bootRepackage命令成功了,谢谢!实际上,也需要可执行=真实部分;我已经有了,但是忘了提了,现在已经更新了。我可以确认情况并非如此,相对路径工作正常。不管怎样,谢谢你的时间。我可以确认情况并非如此,相对路径工作正常。不管怎样,谢谢你抽出时间。
./gradlew bootRun