我正在使用使用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