更新插件到 java16 + nashorn 15.2的时候
遇到了一些nashorn奇怪的问题
先上代码
https://gitee.com/Soldier233/Vip ... /ScriptManager.java
运行时 控制台debug信息和报错如下
复制代码对应的js文件如下
复制代码这个咋就获取不到名叫activate的函数了呢?
有没有dalao知道的?
遇到了一些nashorn奇怪的问题
先上代码
https://gitee.com/Soldier233/Vip ... /ScriptManager.java
运行时 控制台debug信息和报错如下
- [17:57:24 INFO]: Soldier__ issued server command: /vip run TimePerm Soldier__ 1 90s
- [17:57:24 INFO]: [VipSystem-Debug] Precompile custom function TimePerm 's script, file:D:\Minecraft\Servers\1.12 Test2\plugins\VipSystem\custom\TimePerm\script.js
- [17:57:24 INFO]: [VipSystem-Debug] translate {玩家} to Soldier__
- [17:57:24 INFO]: [VipSystem-Debug] translate {权限} to 1
- [17:57:24 INFO]: [VipSystem-Debug] translate {时间} to 90s
- [17:57:24 INFO]: Unknown command. Type "/help" for help.
- [17:57:24 INFO]: [VipSystem-Debug] InvokeD:\Minecraft\Servers\1.12 Test2\plugins\VipSystem\custom\TimePerm\script.js function activate with args (Soldier__)
- [17:57:24 WARN]: java.lang.NoSuchMethodException: No such function activate
- [17:57:24 WARN]: at org.openjdk.nashorn.api.scripting.ScriptObjectMirror.callMember(ScriptObjectMirror.java:192)
- [17:57:24 WARN]: at org.openjdk.nashorn.api.scripting.NashornScriptEngine.invokeImpl(NashornScriptEngine.java:379)
- [17:57:24 WARN]: at org.openjdk.nashorn.api.scripting.NashornScriptEngine.invokeFunction(NashornScriptEngine.java:186)
- [17:57:24 WARN]: at me.zhanshi123.vipsystem.script.ScriptManager.invokeCustomFunction(ScriptManager.java:65)
- [17:57:24 WARN]: at me.zhanshi123.vipsystem.custom.CustomFunction.executeFunction(CustomFunction.java:159)
- [17:57:24 WARN]: at me.zhanshi123.vipsystem.custom.StoredFunction.lambda$handleCustomProcedure$6(StoredFunction.java:118)
- [17:57:24 WARN]: at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:183)
- [17:57:24 WARN]: at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197)
- [17:57:24 WARN]: at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197)
- [17:57:24 WARN]: at java.base/java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:179)
- [17:57:24 WARN]: at java.base/java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1625)
- [17:57:24 WARN]: at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:484)
- [17:57:24 WARN]: at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:474)
- [17:57:24 WARN]: at java.base/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:150)
- [17:57:24 WARN]: at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:173)
- [17:57:24 WARN]: at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
- [17:57:24 WARN]: at java.base/java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:596)
- [17:57:24 WARN]: at me.zhanshi123.vipsystem.custom.StoredFunction.handleCustomProcedure(StoredFunction.java:112)
- [17:57:24 WARN]: at me.zhanshi123.vipsystem.custom.StoredFunction.executeStart(StoredFunction.java:93)
- [17:57:24 WARN]: at me.zhanshi123.vipsystem.command.sub.RunCommand.onCommand(RunCommand.java:50)
- [17:57:24 WARN]: at me.zhanshi123.vipsystem.command.CommandsExecutor.handle(CommandsExecutor.java:63)
- [17:57:24 WARN]: at me.zhanshi123.vipsystem.command.CommandsExecutor.onCommand(CommandsExecutor.java:34)
- [17:57:24 WARN]: at org.bukkit.command.PluginCommand.execute(PluginCommand.java:44)
- [17:57:24 WARN]: at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:152)
- [17:57:24 WARN]: at org.bukkit.craftbukkit.v1_12_R1.CraftServer.dispatchCommand(CraftServer.java:685)
- [17:57:24 WARN]: at net.minecraft.server.v1_12_R1.PlayerConnection.handleCommand(PlayerConnection.java:1492)
- [17:57:24 WARN]: at net.minecraft.server.v1_12_R1.PlayerConnection.a(PlayerConnection.java:1297)
- [17:57:24 WARN]: at net.minecraft.server.v1_12_R1.PacketPlayInChat.a(PacketPlayInChat.java:45)
- [17:57:24 WARN]: at net.minecraft.server.v1_12_R1.PacketPlayInChat.a(PacketPlayInChat.java:5)
- [17:57:24 WARN]: at net.minecraft.server.v1_12_R1.PlayerConnectionUtils.lambda$ensureMainThread$0(PlayerConnectionUtils.java:14)
- [17:57:24 WARN]: at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)
- [17:57:24 WARN]: at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
- [17:57:24 WARN]: at net.minecraft.server.v1_12_R1.SystemUtils.a(SourceFile:46)
- [17:57:24 WARN]: at net.minecraft.server.v1_12_R1.MinecraftServer.D(MinecraftServer.java:850)
- [17:57:24 WARN]: at net.minecraft.server.v1_12_R1.DedicatedServer.D(DedicatedServer.java:423)
- [17:57:24 WARN]: at net.minecraft.server.v1_12_R1.MinecraftServer.C(MinecraftServer.java:774)
- [17:57:24 WARN]: at net.minecraft.server.v1_12_R1.MinecraftServer.run(MinecraftServer.java:666)
- [17:57:24 WARN]: at java.base/java.lang.Thread.run(Thread.java:831)
- var bukkit = Java.type("org.bukkit.Bukkit");
- //获取Bukkit
- var Vector = Java.type("org.bukkit.util.Vector");
- //获取Vector向量
- var activate = function (player) {
- //此时传入的player参数为字符串
- helper.sendMessage("&6公告 &7>>> &f玩家 &a" +player+" &f购买了临时飞行权限,大家快去膜拜一下氪金大佬!");
- };
有没有dalao知道的?
本帖最后由 Hueihuea 于 2021-6-10 21:41 编辑
你试着eval里面直接带上调用函数的代码
而不是invokeFunction试试看?
你试着eval里面直接带上调用函数的代码
而不是invokeFunction试试看?
Hueihuea 发表于 2021-6-10 21:36
你试着eval里面直接带上调用函数的代码
而不是invokeFunction试试看?
测试了一下
发现 不带bindings或者context
直接eval是可以用的
但是CompiledScript不能用
带了bindings或context
一个都用不了
但是频繁eval又会造成卡顿。。
所以还是得想办法解决不能预编译的问题