使用 Bukkit-API 我目前正在尝试创建一个插件,该插件可以在运行时编译给定 pastebin 链接的 java 代码并执行该代码。到目前为止一切正常,除了一件事:当我尝试访问一个已加载的插件时,我得到了 ClassNotFoundException。(当我使用 Bukkit-API 方法时,我没有遇到异常!)所有插件 jar 都已添加到类路径中;它目前看起来像这样:
/home/cubepanel/test-network/jars/craftcubbit.jar:/home/cubepanel/test-network/servers/ProHub/plugins/MultiCubeHub.jar:/home/cubepanel/test-network/servers/ProHub/plugins/MultiCubeCore.jar:
我尝试动态加载的类:
MutliCube 的 ClassNotFoundException
import be.multicu.core.MultiCube;
public class Test{
public void debug() {
System.out.println(MultiCube.getInstance());
}
}
在职的
import org.bukkit.Bukkit;
public class Test{
public void debug() {
System.out.println(Bukkit.getClass().getName());
}
}
RuntimeCompiler.java 的源代码:http://paste.multicu.be/axigofekip.avrasm (有点长,这就是我使用 pastebin 链接的原因)
我还注意到,当我删除 MultiCube.jar 的类路径时出现编译错误,这意味着类路径必须正确,因为可以编译源代码。
编辑:我能够通过在我的 URLClassLoader 的构造函数中添加 MultiCube.class.getClassLoader() 作为参数来修复它