场景是 1 个系统用户运行需要不同 Java 版本的多个 Java 服务...是的,它是一个 Minecraft 服务器...minecraft 1.17+ 需要不同的版本,所以我需要找到一种方法让 3 台服务器运行 Java 11,至少 1 台服务器运行 Java 17...我被告知使用 JAVA_HOME,但我查找的所有内容对我来说都没有意义...我将服务器作为 systemd 运行,因此它有一个服务文件/etc/systemd/system
。这就是它的样子。
[Unit]
Description=start and stop the RENAISSANCE minecraft-server
After=network.target
Before=builder.service skyblock.service hardcore.service
[Service]
Type=idle
WorkingDirectory=/opt/minecraft/server/renaissance
UMask=002
User=minecraft
Group=minecraft
Restart=always
RestartSec=20 5
Nice=1
KillMode=none
SuccessExitStatus=0 1
ProtectHome=true
ProtectSystem=full
PrivateDevices=true
NoNewPrivileges=true
ExecStart=/usr/bin/java -Xms3G -Xmx6G -jar renaissance.jar nogui
ExecStop=/opt/minecraft/tools/mcrcon/mcrcon -H 127.0.0.1 -P 25596 -p ******* stop
[Install]
WantedBy=multi-user.target
我真正迷失在所有链接中的地方,/usr/bin/java
我跟着它全部到/usr/lib/jvm
这里,这是它获取特定版本的 java 的地方,我可以使用以下命令更改它:
update-alternatives --display java
但这会改变它,以便每个人都可以一直使用。我需要一个服务来使用 java 17+。我该如何正确实现这一点?我还了解到,新的“正确方法”在我的/etc/systemd/system
目录中,我应该使用 someservice.conf 文件,这可能就是应该发生这种情况的地方。如果有帮助的话,我正在使用 ubuntu 20.04。