我在代码里写了这样子一段代码 想用于加载js脚本
public void RunFunc(String funName, LivingEntity... args){
ScriptEngineManager engineManager = new ScriptEngineManager();
ScriptEngine scriptEngine = engineManager.getEngineByName("Nashorn");
scriptEngine.put("bukkit",Bukkit.getServer());
scriptEngine.put("LevelClassName", "java.util.logging.Level");
scriptEngine.put("ChatColorClassName", "org.bukkit.ChatColor");
scriptEngine.put("TargetUtils", "magiciorigin.magiciorigin.Rpg.Utils.TargetUtils");
scriptEngine.put("xc", "me.yic.xconomy.api.XConomyAPI");
try {
scriptEngine.eval(this.ManyCondtionPipeline.continueJs);
// // 调用定义的GoStatus函数
Invocable invocable = (Invocable) scriptEngine;
invocable.invokeFunction("gostatus", args[0]);
}catch (Exception e){
e.printStackTrace();
}
}
上面的是代码
自动寻找敌人无人的话随意走动:
continue: |
function gostatus(entity) {
var xconomy = Java.type(xc);
var no = xconomy.getversion();
if (entity.getHealth() >= 5){
}
}
这是脚本内容,但是加载后,他提示 [11:55:37 WARN]: Caused by: java.lang.ClassNotFoundException: me.yic.xconomy.api.XConomyAPI[11:55:37 WARN]: at java.net.URLClassLoader.findClass(URLClassLoader.java:387)[11:55:37 WARN]: at java.lang.ClassLoader.loadClass(ClassLoader.java:418)[11:55:37 WARN]: at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:355)[11:55:37 WARN]: at java.lang.ClassLoader.loadClass(ClassLoader.java:351)[11:55:37 WARN]: at java.lang.Class.forName0(Native Method)[11:55:37 WARN]: at java.lang.Class.forName(Class.java:348)[11:55:37 WARN]: at jdk.nashorn.internal.runtime.Context.findClass(Context.java:1051)[11:55:37 WARN]: at jdk.nashorn.internal.objects.NativeJava.simpleType(NativeJava.java:498)[11:55:37 WARN]: at jdk.nashorn.internal.objects.NativeJava.type(NativeJava.java:322)[11:55:37 WARN]: at jdk.nashorn.internal.objects.NativeJava.type(NativeJava.java:314)[11:55:37 WARN]: at jdk.nashorn.internal.objects.NativeJava.type(NativeJava.java:310)[11:55:37 WARN]: at jdk.nashorn.internal.scripts.Script$Recompilation$71$26A$\^eval\_.gostatus(:3)[11:55:37 WARN]: at jdk.nashorn.internal.runtime.ScriptFunctionData.invoke(ScriptFunctionData.java:639)[11:55:37 WARN]: at jdk.nashorn.internal.runtime.ScriptFunction.invoke(ScriptFunction.java:494)[11:55:37 WARN]: at jdk.nashorn.internal.runtime.ScriptRuntime.apply(ScriptRuntime.java:393)[11:55:37 WARN]: ... 25 more
问题就来了,这个插件我明明是装上了的,而且功能都正常使用,怎么可能会出现class not found的问题?而上面的这几行代码 却又加载正常size=13.0667px] [size=13.0667px]scriptEngine.put([size=13.0667px]"bukkit"[size=13.0667px],[size=13.0667px]Bukkit.[size=13.0667px]getServer[size=13.0667px)[size=13.0667px];
[size=13.0667px] [size=13.0667px]scriptEngine.put([size=13.0667px]"LevelClassName"[size=13.0667px], [size=13.0667px]"java.util.logging.Level"[size=13.0667px])[size=13.0667px];
[size=13.0667px] [size=13.0667px]scriptEngine.put([size=13.0667px]"ChatColorClassName"[size=13.0667px], [size=13.0667px]"org.bukkit.ChatColor"[size=13.0667px])[size=13.0667px];请大佬支支招 搞得都裂开了
public void RunFunc(String funName, LivingEntity... args){
ScriptEngineManager engineManager = new ScriptEngineManager();
ScriptEngine scriptEngine = engineManager.getEngineByName("Nashorn");
scriptEngine.put("bukkit",Bukkit.getServer());
scriptEngine.put("LevelClassName", "java.util.logging.Level");
scriptEngine.put("ChatColorClassName", "org.bukkit.ChatColor");
scriptEngine.put("TargetUtils", "magiciorigin.magiciorigin.Rpg.Utils.TargetUtils");
scriptEngine.put("xc", "me.yic.xconomy.api.XConomyAPI");
try {
scriptEngine.eval(this.ManyCondtionPipeline.continueJs);
// // 调用定义的GoStatus函数
Invocable invocable = (Invocable) scriptEngine;
invocable.invokeFunction("gostatus", args[0]);
}catch (Exception e){
e.printStackTrace();
}
}
上面的是代码
自动寻找敌人无人的话随意走动:
continue: |
function gostatus(entity) {
var xconomy = Java.type(xc);
var no = xconomy.getversion();
if (entity.getHealth() >= 5){
}
}
这是脚本内容,但是加载后,他提示 [11:55:37 WARN]: Caused by: java.lang.ClassNotFoundException: me.yic.xconomy.api.XConomyAPI[11:55:37 WARN]: at java.net.URLClassLoader.findClass(URLClassLoader.java:387)[11:55:37 WARN]: at java.lang.ClassLoader.loadClass(ClassLoader.java:418)[11:55:37 WARN]: at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:355)[11:55:37 WARN]: at java.lang.ClassLoader.loadClass(ClassLoader.java:351)[11:55:37 WARN]: at java.lang.Class.forName0(Native Method)[11:55:37 WARN]: at java.lang.Class.forName(Class.java:348)[11:55:37 WARN]: at jdk.nashorn.internal.runtime.Context.findClass(Context.java:1051)[11:55:37 WARN]: at jdk.nashorn.internal.objects.NativeJava.simpleType(NativeJava.java:498)[11:55:37 WARN]: at jdk.nashorn.internal.objects.NativeJava.type(NativeJava.java:322)[11:55:37 WARN]: at jdk.nashorn.internal.objects.NativeJava.type(NativeJava.java:314)[11:55:37 WARN]: at jdk.nashorn.internal.objects.NativeJava.type(NativeJava.java:310)[11:55:37 WARN]: at jdk.nashorn.internal.scripts.Script$Recompilation$71$26A$\^eval\_.gostatus(:3)[11:55:37 WARN]: at jdk.nashorn.internal.runtime.ScriptFunctionData.invoke(ScriptFunctionData.java:639)[11:55:37 WARN]: at jdk.nashorn.internal.runtime.ScriptFunction.invoke(ScriptFunction.java:494)[11:55:37 WARN]: at jdk.nashorn.internal.runtime.ScriptRuntime.apply(ScriptRuntime.java:393)[11:55:37 WARN]: ... 25 more
问题就来了,这个插件我明明是装上了的,而且功能都正常使用,怎么可能会出现class not found的问题?而上面的这几行代码 却又加载正常size=13.0667px] [size=13.0667px]scriptEngine.put([size=13.0667px]"bukkit"[size=13.0667px],[size=13.0667px]Bukkit.[size=13.0667px]getServer[size=13.0667px)[size=13.0667px];
[size=13.0667px] [size=13.0667px]scriptEngine.put([size=13.0667px]"LevelClassName"[size=13.0667px], [size=13.0667px]"java.util.logging.Level"[size=13.0667px])[size=13.0667px];
[size=13.0667px] [size=13.0667px]scriptEngine.put([size=13.0667px]"ChatColorClassName"[size=13.0667px], [size=13.0667px]"org.bukkit.ChatColor"[size=13.0667px])[size=13.0667px];请大佬支支招 搞得都裂开了