amazon-ec2 - 尝试在 EC2 实例上运行 Minecraft 服务器时“未设置 X11 DISPLAY 变量”

标签 amazon-ec2 minecraft x11 x11-forwarding

当我尝试在 ec2 实例上运行 Minecraft 服务器时,遇到以下问题:

java[7261]: No X11 DISPLAY variable was set, but this program performed an operation which requires it.
java[7261]: at java.awt.GraphicsEnvironment.checkHeadless(GraphicsEnvironment.java:204)
java[7261]: at java.awt.Window.<init>(Window.java:536)
java[7261]: at java.awt.Frame.<init>(Frame.java:420)
java[7261]: at java.awt.Frame.<init>(Frame.java:385)
java[7261]: at javax.swing.SwingUtilities$SharedOwnerFrame.<init>(SwingUtilities.java:1763)
java[7261]: at javax.swing.SwingUtilities.getSharedOwnerFrame(SwingUtilities.java:1838)
java[7261]: at javax.swing.JOptionPane.getRootFrame(JOptionPane.java:1696)
java[7261]: at javax.swing.JOptionPane.showOptionDialog(JOptionPane.java:863)
java[7261]: at javax.swing.JOptionPane.showMessageDialog(JOptionPane.java:666)
java[7261]: at javax.swing.JOptionPane.showMessageDialog(JOptionPane.java:637)
java[7261]: at net.minecraftforge.installer.SimpleInstaller.launchGui(SimpleInstaller.java:177)
java[7261]: at net.minecraftforge.installer.SimpleInstaller.main(SimpleInstaller.java:147)
systemd[1]: minecraft.service: main process exited, code=exited, status=1/FAILURE
systemd[1]: Unit minecraft.service entered failed state.
systemd[1]: minecraft.service failed.

我的用户数据脚本如下所示(每次启动实例时运行):

#!/usr/bin/env bash
sudo yum -y install java-1.8.0
sudo mkdir /minecraft
sudo chown -R 777 /minecraft
cd /minecraft
aws s3 cp s3://minecraft-server-v3/setup/forge-1.12.2-14.23.5.2860-installer.jar /minecraft/forge-1.12.2-14.23.5.2860-installer.jar
export DISPLAY=:0.0
java -jar forge-1.12.2-14.23.5.2860-installer.jar --installServer
echo '#By changing the setting below to TRUE you are indicating your agreement to our EULA (https://account.mojang.com/documents/minecraft_eula).
#Mon Aug 06 18:11:14 UTC 2018
eula=true' > eula.txt
aws s3 cp s3://minecraft-server-v3/setup/mods.zip /minecraft/mods.zip
unzip mods.zip
sudo aws s3 cp s3://minecraft-server-v3/setup/minecraft.service /etc/systemd/system/minecraft.service
sudo chmod 777 /etc/systemd/system/minecraft.service
sudo systemctl daemon-reload
sudo service minecraft start

我的 minecraft.service 文件如下所示:

[Unit]
Description=Minecraft Service
After=default.target

[Service]
Type=simple
User=ec2-user
WorkingDirectory=/minecraft
ExecStart=/usr/bin/java -Xmx8G -Xms8G -jar /minecraft/forge-1.12.2-14.23.5.2860-installer.jar nogui

知道会发生什么吗?哪些操作需要显示?我很困惑。将不胜感激任何帮助。

最佳答案

问题

据我了解,问题出在您的 minecraft.service 文件上。

当您启动服务时,您正在运行 forge 服务器的安装程序。

安装程序需要 X,除非使用 --installServer 标志运行,就像您在用户数据脚本中所做的那样。

这就是您遇到错误的原因。

解决方案

我想您想运行实际的服务器 .jar

对于您正在使用的安装程序的版本,我很确定 jar 的名称是:

minecraftforge-universal-1.12.2-14.23.5.2860.jar

以此为例,您想用以下命令替换当前命令:

/usr/bin/java -Xmx8G -Xms8G -jar minecraftforge-universal-1.12.2-14.23.5.2860.jar nogui

关于amazon-ec2 - 尝试在 EC2 实例上运行 Minecraft 服务器时“未设置 X11 DISPLAY 变量”,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72165297/

相关文章:

c++ - X11/Xlib c/c++ 字符到 XKeyEvent 键码

amazon-web-services - AWS Cloud Formation 启动配置文件部分

mysql - 将 wait_timout 设置为 30 ,仍然 sleep 连接以恒定速率增加

java - 如何使用实例引用实例?

Minecraft 的 Java 插件 - 更改命令

java - Rideable Controlled Entity 我的世界

c++ - 如何使用 C/C++ 获取数字锁定状态?

c++ - 在 qt 应用程序内执行 qt 应用程序

bash - 如何从 AWS 中的实例中获取实例名称?

php - Amazon AMI(EC2)上的PHP + SQLite3