linux用service启动jar包,Paths.get(“”).toAbsolutePath()是根目录的解决方案
在Linux系统中,使用service命令启动Jar包时,
如果你看到Paths.get(“”).toAbsolutePath()返回了根目录(/),
可能是因为你的Jar包中的代码试图获取当前工作目录的绝对路径,
但是当服务不是以交互式用户启动时,
可能会以根目录作为当前工作目录。
为了解决这个问题,你可以通过以下方法指定Jar包的工作目录:
修改服务的启动脚本。
在Java命令中使用-Duser.dir参数来设置工作目录。
下面是一个示例服务启动脚本,它设置了工作目录:
#!/bin/sh
# chkconfig: 2345 20 80
# description: Service to run the Java application
JAR_FILE=your-application.jar
WORKING_DIR=/path/to/your/working/directory
case "$1" in
start)
echo "Starting your Java application..."
cd $WORKING_DIR
java -Duser.dir=$WORKING_DIR -jar $JAR_FILE
;;
stop)
echo "Stopping your Java application..."
# Logic to stop the application
;;
*)
echo "Usage: service your-service-name {start|stop}"
exit 1
esac
exit 0
确保替换your-application.jar和/path/to/your/working/directory为你的Jar包文件名和工作目录。
然后,你可以使用service命令启动你的服务:
sudo service your-service-name start
这样,无论是以服务还是直接运行,你的Java应用程序都会在指定的工作目录下运行。