[服务器搭建]Forge服务端在linux Debian上搭建复盘过程

起因:试了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

成功正版连接

  • 15
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值