起因:试了mohist,catServer服务端,卡在下载依赖文件,准备试试Forge
发现一个教程:Minecraft Mod服务器搭建(Forge服务器) - 雨月空间站 (mintimate.cn)
在执行命令时
java -jar forge-1.12.2-14.23.5.2859-installer.jar -install
报错
JVM info: Debian - 17.0.11 - 17.0.11+9-Debian-1deb12u1 java.net.preferIPv4Stack=true Current Time: 12/06/2024 00:23:45 Exception in thread "main" joptsimple.UnrecognizedOptionException: i is not a recognized option at joptsimple.OptionException.unrecognizedOption(OptionException.java:108) at joptsimple.OptionParser.validateOptionCharacters(OptionParser.java:642) at joptsimple.OptionParser.handleShortOptionCluster(OptionParser.java:537) at joptsimple.OptionParser.handleShortOptionToken(OptionParser.java:532) at joptsimple.OptionParserState$2.handleArgument(OptionParserState.java:59) at joptsimple.OptionParser.parse(OptionParser.java:405) at net.minecraftforge.installer.SimpleInstaller.main(SimpleInstaller.java:76) root@GanServer:/home/forge#
问问了chat
可能是因为这个指令需要图形化界面,改用chatgpt提供的指令(在命令行中进行安装)
java -jar forge-1.12.2-14.23.5.2859-installer.jar --installServer
成功下载
启动服务器使用命令
java -jar forge-1.12.2-14.23.5.2859.jar
又遇到问题报错
A problem occurred running the Server launcher.java.lang.reflect.InvocationTargetException at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:568) at net.minecraftforge.fml.relauncher.ServerLaunchWrapper.run(ServerLaunchWrapper.java:70) at net.minecraftforge.fml.relauncher.ServerLaunchWrapper.main(ServerLaunchWrapper.java:34) Caused by: java.lang.ClassCastException: class jdk.internal.loader.ClassLoaders$AppClassLoader cannot be cast to class java.net.URLClassLoader (jdk.internal.loader.ClassLoaders$AppClassLoader and java.net.URLClassLoader are in module java.base of loader 'bootstrap') at net.minecraft.launchwrapper.Launch.<init>(Launch.java:34) at net.minecraft.launchwrapper.Launch.main(Launch.java:28) ... 6 more
问了chat,是因为java版本不兼容
开始折腾换版本
sudo apt update
sudo apt install openjdk-8-jdk
直接下载失败报错
Reading package lists... Done Building dependency tree... Done Reading state information... Done E: Unable to locate package openjdk-8-jdk
Debian上没有这个库?
使用chat说的添加仓库
sudo apt update
sudo apt install software-properties-common
sudo add-apt-repository 'deb http://security.debian.org/debian-security stretch/updates main'
sudo add-apt-repository 'deb Index of /debian stretch main'
依旧失败
采取手动安装
从 AdoptOpenJDK 或者 Azul Zulu 下载适用于 Linux 的 OpenJDK 8。
使用命令
wget https://cdn.azul.com/zulu/bin/zulu8.56.0.21-ca-jdk8.0.302-linux_x64.tar.gz
解压到/opt
sudo tar -xzf zulu8.56.0.21-ca-jdk8.0.302-linux_x64.tar.gz -C /opt
设置环境变量:编辑 /etc/profile 文件,添加以下内容:
export JAVA_HOME=/opt/zulu8.56.0.21-ca-jdk8.0.302-linux_x64
export PATH=$JAVA_HOME/bin:$PATH
然后加载新的配置:
source /etc/profile
确认版本没错
重新运行 Forge 安装程序
java -jar forge-1.12.2-14.23.5.2859-installer.jar --installServer
再次报错(超长)
root@GanServer:/home/forge# java -jar forge-1.12.2-14.23.5.2859.jar [00:39:11] [main/INFO] [LaunchWrapper]: Loading tweak class name net.minecraftforge.fml.common.launcher.FMLServerTweaker [00:39:11] [main/INFO] [LaunchWrapper]: Using primary tweak class name net.minecraftforge.fml.common.launcher.FMLServerTweaker [00:39:11] [main/INFO] [LaunchWrapper]: Calling tweak class net.minecraftforge.fml.common.launcher.FMLServerTweaker [00:39:11] [main/INFO] [FML]: Forge Mod Loader version 14.23.5.2859 for Minecraft 1.12.2 loading [00:39:11] [main/INFO] [FML]: Java is OpenJDK 64-Bit Server VM, version 1.8.0_302, running on Linux:amd64:6.1.0-20-amd64, installed at /opt/zulu8.56.0.21-ca-jdk8.0.302-linux_x64/jre [00:39:11] [main/INFO] [FML]: Searching /home/forge/./mods for mods [00:39:11] [main/INFO] [LaunchWrapper]: Loading tweak class name net.minecraftforge.fml.common.launcher.FMLInjectionAndSortingTweaker [00:39:11] [main/INFO] [LaunchWrapper]: Loading tweak class name net.minecraftforge.fml.common.launcher.FMLDeobfTweaker [00:39:11] [main/INFO] [LaunchWrapper]: Calling tweak class net.minecraftforge.fml.common.launcher.FMLInjectionAndSortingTweaker [00:39:11] [main/INFO] [LaunchWrapper]: Calling tweak class net.minecraftforge.fml.common.launcher.FMLInjectionAndSortingTweaker [00:39:11] [main/INFO] [LaunchWrapper]: Calling tweak class net.minecraftforge.fml.relauncher.CoreModManager$FMLPluginWrapper [00:39:13] [main/INFO] [FML]: Found valid fingerprint for Minecraft Forge. Certificate fingerprint e3c3d50c7c986df74c645c0ac54639741c90a557 [00:39:13] [main/INFO] [LaunchWrapper]: Calling tweak class net.minecraftforge.fml.relauncher.CoreModManager$FMLPluginWrapper [00:39:13] [main/INFO] [LaunchWrapper]: Calling tweak class net.minecraftforge.fml.common.launcher.FMLDeobfTweaker [00:39:13] [main/INFO] [LaunchWrapper]: Loading tweak class name net.minecraftforge.fml.common.launcher.TerminalTweaker [00:39:13] [main/INFO] [LaunchWrapper]: Calling tweak class net.minecraftforge.fml.common.launcher.TerminalTweaker [00:39:13] [main/INFO] [LaunchWrapper]: Launching wrapped minecraft {net.minecraft.server.MinecraftServer} [00:39:15] [main/ERROR] [LaunchWrapper]: Unable to launch java.lang.reflect.InvocationTargetException: null at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_302] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_302] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_302] at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_302] at net.minecraft.launchwrapper.Launch.launch(Launch.java:135) [launchwrapper-1.12.jar:?] at net.minecraft.launchwrapper.Launch.main(Launch.java:28) [launchwrapper-1.12.jar:?] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_302] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_302] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_302] at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_302] at net.minecraftforge.fml.relauncher.ServerLaunchWrapper.run(ServerLaunchWrapper.java:70) [forge-1.12.2-14.23.5.2859.jar:?] at net.minecraftforge.fml.relauncher.ServerLaunchWrapper.main(ServerLaunchWrapper.java:34) [forge-1.12.2-14.23.5.2859.jar:?] Caused by: java.lang.UnsatisfiedLinkError: /opt/zulu8.56.0.21-ca-jdk8.0.302-linux_x64/jre/lib/amd64/libawt_xawt.so: libXrender.so.1: cannot open shared object file: No such file or directory at java.lang.ClassLoader$NativeLibrary.load(Native Method) ~[?:1.8.0_302] at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1950) ~[?:1.8.0_302] at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1832) ~[?:1.8.0_302] at java.lang.Runtime.load0(Runtime.java:811) ~[?:1.8.0_302] at java.lang.System.load(System.java:1088) ~[?:1.8.0_302] at java.lang.ClassLoader$NativeLibrary.load(Native Method) ~[?:1.8.0_302] at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1950) ~[?:1.8.0_302] at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1853) ~[?:1.8.0_302] at java.lang.Runtime.loadLibrary0(Runtime.java:872) ~[?:1.8.0_302] at java.lang.System.loadLibrary(System.java:1124) ~[?:1.8.0_302] at java.awt.Toolkit$3.run(Toolkit.java:1636) ~[?:1.8.0_302] at java.awt.Toolkit$3.run(Toolkit.java:1634) ~[?:1.8.0_302] at java.security.AccessController.doPrivileged(Native Method) ~[?:1.8.0_302] at java.awt.Toolkit.loadLibraries(Toolkit.java:1633) ~[?:1.8.0_302] at java.awt.Toolkit.<clinit>(Toolkit.java:1670) ~[?:1.8.0_302] at java.awt.Component.<clinit>(Component.java:593) ~[?:1.8.0_302] at net.minecraft.server.dedicated.DedicatedServer.func_120011_ar(DedicatedServer.java:500) ~[nz.class:?] at net.minecraft.server.MinecraftServer.main(MinecraftServer.java:1571) ~[MinecraftServer.class:?] ... 12 more A problem occurred running the Server launcher.[00:39:15] [main/INFO] [STDERR]: [net.minecraftforge.fml.relauncher.ServerLaunchWrapper:main:34]: java.lang.reflect.InvocationTargetException [00:39:15] [main/INFO] [STDERR]: [net.minecraftforge.fml.relauncher.ServerLaunchWrapper:main:34]: at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) [00:39:15] [main/INFO] [STDERR]: [net.minecraftforge.fml.relauncher.ServerLaunchWrapper:main:34]: at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) [00:39:15] [main/INFO] [STDERR]: [net.minecraftforge.fml.relauncher.ServerLaunchWrapper:main:34]: at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) [00:39:15] [main/INFO] [STDERR]: [net.minecraftforge.fml.relauncher.ServerLaunchWrapper:main:34]: at java.lang.reflect.Method.invoke(Method.java:498) [00:39:15] [main/INFO] [STDERR]: [net.minecraftforge.fml.relauncher.ServerLaunchWrapper:main:34]: at net.minecraftforge.fml.relauncher.ServerLaunchWrapper.run(ServerLaunchWrapper.java:70) [00:39:15] [main/INFO] [STDERR]: [net.minecraftforge.fml.relauncher.ServerLaunchWrapper:main:34]: at net.minecraftforge.fml.relauncher.ServerLaunchWrapper.main(ServerLaunchWrapper.java:34) [00:39:15] [main/INFO] [STDERR]: [net.minecraftforge.fml.relauncher.ServerLaunchWrapper:run:75]: Caused by: net.minecraftforge.fml.relauncher.FMLSecurityManager$ExitTrappedException [00:39:15] [main/INFO] [STDERR]: [net.minecraftforge.fml.relauncher.ServerLaunchWrapper:run:75]: at net.minecraftforge.fml.relauncher.FMLSecurityManager.checkPermission(FMLSecurityManager.java:49) [00:39:15] [main/INFO] [STDERR]: [net.minecraftforge.fml.relauncher.ServerLaunchWrapper:run:75]: at java.lang.SecurityManager.checkExit(SecurityManager.java:761) [00:39:15] [main/INFO] [STDERR]: [net.minecraftforge.fml.relauncher.ServerLaunchWrapper:run:75]: at java.lang.Runtime.exit(Runtime.java:108) [00:39:15] [main/INFO] [STDERR]: [net.minecraftforge.fml.relauncher.ServerLaunchWrapper:run:75]: at java.lang.System.exit(System.java:973) [00:39:15] [main/INFO] [STDERR]: [net.minecraftforge.fml.relauncher.ServerLaunchWrapper:run:75]: at net.minecraft.launchwrapper.Launch.launch(Launch.java:138) [00:39:15] [main/INFO] [STDERR]: [net.minecraftforge.fml.relauncher.ServerLaunchWrapper:run:75]: at net.minecraft.launchwrapper.Launch.main(Launch.java:28) [00:39:15] [main/INFO] [STDERR]: [net.minecraftforge.fml.relauncher.ServerLaunchWrapper:run:75]: ... 6 more
问问chat,说系统缺少一些必要的库文件。根据错误信息,缺少 libXrender.so.1 这个库。这个库是某些图形环境依赖的库,即使您不使用图形界面,某些程序仍然可能需要它。
安装库
sudo apt-get update
sudo apt-get install libxrender1 libxtst6 libxi6
ssh软件弹窗
按照提示禁用
又出问题
[00:47:19] [main/ERROR] [LaunchWrapper]: Unable to launch java.lang.reflect.InvocationTargetException: null at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_302] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_302] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_302] at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_302] at net.minecraft.launchwrapper.Launch.launch(Launch.java:135) [launchwrapper-1.12.jar:?] at net.minecraft.launchwrapper.Launch.main(Launch.java:28) [launchwrapper-1.12.jar:?] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_302] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_302] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_302] at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_302] at net.minecraftforge.fml.relauncher.ServerLaunchWrapper.run(ServerLaunchWrapper.java:70) [forge-1.12.2-14.23.5.2859.jar:?] at net.minecraftforge.fml.relauncher.ServerLaunchWrapper.main(ServerLaunchWrapper.java:34) [forge-1.12.2-14.23.5.2859.jar:?] Caused by: java.awt.AWTError: Can't connect to X11 window server using 'localhost:10.0' as the value of the DISPLAY variable. at sun.awt.X11GraphicsEnvironment.initDisplay(Native Method) ~[?:1.8.0_302] at sun.awt.X11GraphicsEnvironment.access$200(X11GraphicsEnvironment.java:65) ~[?:1.8.0_302] at sun.awt.X11GraphicsEnvironment$1.run(X11GraphicsEnvironment.java:115) ~[?:1.8.0_302] at java.security.AccessController.doPrivileged(Native Method) ~[?:1.8.0_302] at sun.awt.X11GraphicsEnvironment.<clinit>(X11GraphicsEnvironment.java:74) ~[?:1.8.0_302] at java.lang.Class.forName0(Native Method) ~[?:1.8.0_302] at java.lang.Class.forName(Class.java:264) ~[?:1.8.0_302] at java.awt.GraphicsEnvironment.createGE(GraphicsEnvironment.java:103) ~[?:1.8.0_302] at java.awt.GraphicsEnvironment.getLocalGraphicsEnvironment(GraphicsEnvironment.java:82) ~[?:1.8.0_302] at sun.awt.X11.XToolkit.<clinit>(XToolkit.java:131) ~[?:1.8.0_302] at java.lang.Class.forName0(Native Method) ~[?:1.8.0_302] at java.lang.Class.forName(Class.java:264) ~[?:1.8.0_302] at java.awt.Toolkit$2.run(Toolkit.java:860) ~[?:1.8.0_302] at java.awt.Toolkit$2.run(Toolkit.java:855) ~[?:1.8.0_302] at java.security.AccessController.doPrivileged(Native Method) ~[?:1.8.0_302] at java.awt.Toolkit.getDefaultToolkit(Toolkit.java:854) ~[?:1.8.0_302] at javax.swing.UIManager.getSystemLookAndFeelClassName(UIManager.java:611) ~[?:1.8.0_302] at net.minecraft.server.gui.MinecraftServerGui.func_120016_a(MinecraftServerGui.java:46) ~[oc.class:?] at net.minecraft.server.dedicated.DedicatedServer.func_120011_ar(DedicatedServer.java:500) ~[nz.class:?] at net.minecraft.server.MinecraftServer.main(MinecraftServer.java:1571) ~[MinecraftServer.class:?] ... 12 more
问问chat,说Minecraft 服务器试图连接到 X11 窗口服务器,但在无头环境中不需要图形界面。我们可以通过设置系统属性来避免尝试使用图形界面。
添加一个 JVM 参数来告诉 Java 不使用图形界面。java -Djava.awt.headless=true -jar forge-1.12.2-14.23.5.2859.jar --installServer
成功运行
云服务器控制台开放25565端口
之后字运行使用命令java -Djava.awt.headless=true -jar forge-1.12.2-14.23.5.2859.jar nogui
成功正版连接