首页 > 解决方案 > 使用多个版本而无需重新安装

问题描述

当我遇到 forge 问题时,我正在我的 Raspberry Pi 上设置一个改装的 Minecraft 服务器。我之前设置了一个运行 1.17 的 vanilla 服务器,它需要 Java 16,但我需要 Java 15 或更低版本的 forge。我之前从https://adoptopenjdk.net/releases.html为 arm32 架构安装了 Java 16 JDK ,它运行得非常好。我尝试为其安装服务器的 forge 版本是 1.16.5。我下载了安装程序,它运行得很好。它生成forge-1.16.5-36.2.2.jar了,我很确定这是服务器文件。每当我尝试运行该服务器 jar 文件时,就会出现问题。我得到错误:

[15:26:15] [main/INFO] [cp.mo.mo.Launcher/MODLAUNCHER]: ModLauncher running: args [--gameDir, ., --launchTarget, fmlserver, --fml.forgeVersion, 36.2.2, --fml.mcpVersion, 20210115.111550, --fml.mcVersion, 1.16.5, --fml.forgeGroup, net.minecraftforge]
[15:26:15] [main/INFO] [cp.mo.mo.Launcher/MODLAUNCHER]: ModLauncher 8.0.9+86+master.3cf110c starting: java version 16.0.1 by AdoptOpenJDK
Exception in thread "main" java.lang.IllegalAccessError: class cpw.mods.modlauncher.SecureJarHandler (in unnamed module @0x1c911a1) cannot access class sun.security.util.ManifestEntryVerifier (in module java.base) because module java.base does not export sun.security.util to unnamed module @0x1c911a1
    at cpw.mods.modlauncher.SecureJarHandler.lambda$static$1(SecureJarHandler.java:41)
    at cpw.mods.modlauncher.api.LamdbaExceptionUtils.uncheck(LamdbaExceptionUtils.java:95)
    at cpw.mods.modlauncher.SecureJarHandler.<clinit>(SecureJarHandler.java:41)
    at cpw.mods.modlauncher.Launcher.lambda$new$6(Launcher.java:55)
    at java.base/java.util.concurrent.ConcurrentHashMap.computeIfAbsent(ConcurrentHashMap.java:1708)
    at cpw.mods.modlauncher.api.TypesafeMap.computeIfAbsent(TypesafeMap.java:52)
    at cpw.mods.modlauncher.api.TypesafeMap.computeIfAbsent(TypesafeMap.java:47)
    at cpw.mods.modlauncher.Environment.computePropertyIfAbsent(Environment.java:62)
    at cpw.mods.modlauncher.Launcher.<init>(Launcher.java:55)
    at cpw.mods.modlauncher.Launcher.main(Launcher.java:66)
    at net.minecraftforge.server.ServerMain$Runner.runLauncher(ServerMain.java:63)
    at net.minecraftforge.server.ServerMain$Runner.access$100(ServerMain.java:60)
    at net.minecraftforge.server.ServerMain.main(ServerMain.java:57)

在研究了这个错误消息后,我发现大多数人说解决这个问题的唯一方法是降级到 Java 15。我真的不想这样做,因为我也有一个 1.17 的服务器正在运行,它需要 Java 16 才能运行,所以如果我降级,我将无法运行它。我想知道是否有办法解决这个限制,我可以在同一台设备上运行 forge 服务器和 vanilla 1.17 服务器。我将在下面添加一些额外的信息,这可能会有所帮助。

设备:Raspberry Pi 4B

确切的 JDK 文件:OpenJDK16U-jdk_arm_linux_hotspot_16.0.1_9.tar.gz

树莓派架构:arm32

设备操作系统:(Raspberry Pi OS Lite无窗口/显示管理器)

标签: javaraspberry-piminecraft-forge

解决方案


如果您同时安装这两个版本,您应该能够通过首先键入来指定要使用的版本

ls /usr/lib/jvm/

这将列出您已安装的所有版本。对我来说,它显示了 java-16-openjdk 和 java-8-openjdk。现在你想编辑你的服务器启动文件,并在乞求放/usr/bin/jvm/javaversion/bin/java,例如/usr/bin/jvm/java-16-openjdk/bin/java -Xmx1024M -Xms1024M -jar forge-1.16.5-36.2.2.jar。在某些版本中,路径是/usr/bin/jvm/javaversion/jre/bin/java.


推荐阅读