在运行时加载类时ClassNotFoundException

时间:2014-08-15 13:59:26

标签: java compilation dynamic-class-loaders dynamic-class-creation

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

0 个答案:

没有答案