我正在使用使用json格式显示主机名的spring IO框架创建的应用程序。作为服务启动时,Java应用程序无法正常工作
当通过命令行由命令启动的应用程序工作正常:
java -jar spring-cd.jar
其给出所需的输出:
但是当它被运行作为服务使用系统单元文件reuqired输出(主机名)为空:
为单位文件的代码如下:
[Unit]
After=network.target
[Service]
ExecStart=/usr/bin/java -jar /opt/training/spring-cd/spring-cd.jar
Type=simple
User=root
Restart=always
[Install]
WantedBy=default.target
我不明白什么是这些办法,为什么第二次显示“空”之间的区别。此外,我相当新,并systemd和Linux。
相关的Java代码:当systemd运行
import java.lang.System;
public class Greeting {
private final String content;
public Greeting() {
this.content = getHostname();
}
private String getHostname(){
String hostname;
if (System.getProperty("os.name").startsWith("Windows")) {
hostname = System.getenv("COMPUTERNAME");
} else {
hostname = System.getenv("HOSTNAME");
}
return hostname;
}
public String getContent() {
return content;
}
}
您可以发布相关的Java读取主机名的代码? – randomir
我编辑了帖子,并添加了包含java代码的github repo的链接 – MiM1
我猜环境变量可能不同。 – hailinzeng