0

Javaで実行時にクラスを呼び出すのに問題があります 基本的にプラグインフレームワークを作成しています

plugin/Plugins.cfg を開いてテストを解析し、マップに変換します。 cfg ファイル内の EX テキスト 1 = myplugin 2 = plugin2

(各プラグインのメイン クラスは、plugin.(プラグイン名).main.class)

ご覧のとおり、マップから各値をロードし、そのメイン クラスを実行しようとします。

public static void loadPlugins()
{
    int x = hackers.core.startup.InitializeGame.map.size();
    for (int i = 1; i<=x;i++)
    {
        String className = hackers.core.startup.InitializeGame.map.get(i + "");

        File file  = new File(System.getProperty("user.dir") + File.separator + "plugins" + File.separator + className);
        URL url = null;
        try {
            url = file.toURI().toURL();
        } catch (MalformedURLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }  
        URL[] urls = new URL[]{url};
        ClassLoader cl = new URLClassLoader(urls);

        try {
            Class cls = cl.loadClass("plugin." + className + ".main");
        } catch (ClassNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

        System.out.println(className);
    }
}

Class cls = cl.loadClass("plugin." + className + ".main");

^line で次のエラーが表示されます: java.lang.ClassNotFoundException: plugin.myplugin.main

誰かがここで何が悪いのか知っていますか?または何か提案があります.APIを調べましたが、混乱し、ドキュメントがありません.

4

1 に答える 1

0

file有効なクラスまたはjarファイルを指していません。

次の行をデバッグします。そのパスがファイルシステムの既存のパスではないことに気付くでしょう。

File file  = new File(System.getProperty("user.dir") + File.separator + "plugins" + File.separator + className);

.classに含めるのを忘れたと思いますclassName

于 2012-10-04T01:05:25.350 に答える