蓝枫疯疯疯
原服务端版本升级,有插件强制要求使用java17。使用java16可以开服,java8/17均不可以,但java8/16/17都可以在spigot1.12.2/1.8的版本下成功开服。
求助是spigot1.16.5只能使用Java16吗?有无兼容性办法?

teddyxlandlee
您好,Bukkit系的1.16.5最高只支持Java 16。将您的Java 17下的插件强行拽回Java 16显然是不现实的。
然而,Java 16与Java 17之间本身的区别并不明显,仅仅是CraftBukkit的Main类中对Java版本进行了判定,如果大于16就退出。
如果方便的话,请您上传您的启动脚本或者启动命令,我会给您一个解决方案。

蓝枫疯疯疯
teddyxlandlee 发表于 2023-5-12 19:11
您好,Bukkit系的1.16.5最高只支持Java 16。将您的Java 17下的插件强行拽回Java 16显然是不现实的。
然而, ...

启动bat
  1. [url=home.php?mod=space&uid=39305]@echo[/url] OFF
  2. "C:\Program Files\Java\jdk-17\bin\java.exe" -Xmx1G -jar spigot-1.16.5.jar
复制代码

主要是有几个插件强制要求java版本需要大于17...没办法的话只能升级到1.18.2了

teddyxlandlee
蓝枫疯疯疯 发表于 2023-5-12 19:29
启动bat

主要是有几个插件强制要求java版本需要大于17...没办法的话只能升级到1.18.2了 ...

方便传一下spigot-1.16.5.jar吗?懒得从getbukkit.org下了)))

蓝枫疯疯疯
teddyxlandlee 发表于 2023-5-12 19:32
方便传一下spigot-1.16.5.jar吗?懒得从getbukkit.org下了)))

太大了 附件传不上去...

Flower_胡子
上传日志文件
以及按道理来说 是不建议使用Java17去启动1.16.5版本的
只能说写这个插件的作者多少...

蓝枫疯疯疯
Flower_胡子 发表于 2023-5-12 19:53
上传日志文件
以及按道理来说 是不建议使用Java17去启动1.16.5版本的
只能说写这个插件的作者多少... ...

我已经强行升级到1.18.2 不用再纠结这个了
CMI新版已经不支持1.12.2了,但1.13+又不支持java17,JPremium又需要java17,最后换了一些插件升到1.18.2了『累』

teddyxlandlee
解决方案:
spigot-1.16.5-java17patch-0.1-alpha.jar (135.95 KB, 下载次数: 0)
下载此文件至服务端目录,并运行:
  1. java -jar spigot-1.16.5-java17patch-0.1-alpha.jar
复制代码

如果无报错,目录下应该生成了spigot-1.16.5-M.jar这个文件,它就是修改后的核心。

然后将启动脚本中spigot-1.16.5.jar 替换为 spigot-1.16.5-M.jar,java路径替换为java17的路径


如果对我修改的核心不放心,大可以看看修改工具的源码:

名副其实
建议:如果服务端无法启用,则可在服务端参数后添加 -DPaper.IgnoreJavaVersion=true
该参数可使得服务端无视 Java 版本启动。
不知道为什么没人知道这个参数,反正我就用这个在 1.16.5 跑 Java 16

蓝枫疯疯疯
名副其实 发表于 2023-5-12 22:12
建议:如果服务端无法启用,则可在服务端参数后添加 -DPaper.IgnoreJavaVersion=true
该参数可使得服务端无 ...

嘶... 受教了