0

Bukkit-API を使用して、実行時に特定のペーストビン リンクの Java コードをコンパイルし、そのコードを実行できるプラグインを作成しようとしています。1 つのことを除いて、これまでのところすべてが機能しています。既に読み込まれているプラ​​グインの 1 つにアクセスしようとすると、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:

動的にロードしようとしたクラス:

MultiCube の 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 のクラスパスを削除するとコンパイル エラーが発生することにも気付きました。これは、ソースコードをコンパイルできるため、クラスパスが正しい必要があることを意味します。

編集: MultiCube.class.getClassLoader() を URLClassLoader のコンストラクターの引数として追加することで修正できました

4

0 に答える 0