0

使用 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() 作为参数来修复它

4

0 回答 0