服务端原先使用java8(jdk1.8.0_171)
配置过环境变量,全部指向jdk1.8.0_171
在后续安装了java11、java17后cmd中java -version版本被强制指定为java17,所有低版本服务端全部无法开启
显示
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 cpw.mods.fml.relauncher.ServerLaunchWrapper.run(ServerLaunchWrapper.java:43)
at cpw.mods.fml.relauncher.ServerLaunchWrapper.main(ServerLaunchWrapper.java:12)
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
推测是因为java版本错误导致的,有办法强制启动bat设置服务端可以使用的java吗?试过添加:
SET JavaVersion=".\jdk1.8.0_171\bin\java.exe"
这个启动参数,无效。
这个问题很烦,有效的解决方法试过一个是彻底卸载几个高版本java并重装java8,但是那些高版本java我玩整合包都要用到。
配置过环境变量,全部指向jdk1.8.0_171
在后续安装了java11、java17后cmd中java -version版本被强制指定为java17,所有低版本服务端全部无法开启
显示
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 cpw.mods.fml.relauncher.ServerLaunchWrapper.run(ServerLaunchWrapper.java:43)
at cpw.mods.fml.relauncher.ServerLaunchWrapper.main(ServerLaunchWrapper.java:12)
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
推测是因为java版本错误导致的,有办法强制启动bat设置服务端可以使用的java吗?试过添加:
SET JavaVersion=".\jdk1.8.0_171\bin\java.exe"
这个启动参数,无效。
这个问题很烦,有效的解决方法试过一个是彻底卸载几个高版本java并重装java8,但是那些高版本java我玩整合包都要用到。
使用绝对路径
"Java路径"
"Java路径"
SunsetTown 发表于 2023-10-8 10:28
在服务器启动bat中使用绝对路径
java.exe 改为 "Java8的路径"
例如:"C:\Program Files\Java\jre-1.8\bin\ja ...
测试了,无效。这个java17很迷,一装上就给自己设置了极高的优先级,无论环境变量的设置还是启动器里用绝对路径全部无效。
我先试了绝对路径无效,才用了本目录路径(把c盘的java复制一份丢到服务端目录),无效。
刚刚测试了把java17通过控制面板卸载后所有设置立即恢复正常了。java-version版本变回了以前设置的1.8.0,启动器也能和以前一样自动选择合适版本的java,无需进行设置,迷。。
2403 发表于 2023-10-8 10:36
测试了,无效。这个java17很迷,一装上就给自己设置了极高的优先级,无论环境变量的设置还是启动器里用绝 ...
我看看你的bat设置
SunsetTown 发表于 2023-10-8 10:37
我看看你的bat设置
@echo off
set a=0
:restart
title 末日求生 重启次数:%a%
::----设置开服JAVA版本
SET JavaVersion="C:\Program Files\Java\jre1.8.0_171\bin"
java -Xms2000M -Xmx2000M -XX:+UseG1GC -XX:+UnlockExperimentalVMOptions -XX:MaxGCPauseMillis=100 -XX:+DisableExplicitGC -XX:TargetSurvivorRatio=90 -XX:G1NewSizePercent=50 -XX:G1MaxNewSizePercent=80 -XX:G1MixedGCLiveThresholdPercent=35 -XX:+AlwaysPreTouch -XX:+ParallelRefProcEnabled -Dusing.aikars.flags=mcflags.emc.gs -jar iserver.jar
echo 服务器已经崩溃/关闭
rem 延迟5秒钟
ping 127.0.0.1>nul
set /a a=%a%+1
goto restart