2

私はJavaが得意ではないので、本当に簡単なことを見落としているかもしれません...

私はプラグイン システムに取り組んでおり、すべてが Eclipse で完全に正常に動作しますが、実際にその外部でアプレットを起動すると動作しません。

ディレクトリからファイルを読み込んで実行しようとしてい.classますが、うまくいかない理由はわかっていますが、どうすれば解決できるのかわかりません。

問題は、Eclipse がクラスパスでアプレット自体を参照しているが、Eclipse の外部のクラスパスで参照されておらず、-cpまたは-classpathにアクセスできないことです。固定クラスパスを持つ jar。

この問題をどのように解決できるかについてのアイデアはありますか?

ローダー コード:

final ClassLoader loader = new URLClassLoader(new URL[] { new File("C:/Plugin/Directory/").toURI().toURL() });
final Class<?> c = loader.loadClass("PluginFile");
Object s = c.newInstance();
s.getClass().getMethod("onLoad").invoke(s);

プラグイン コード:

import net.plugintest.pluginsystem.*;

public class PluginFile extends ClientPlugin
{
    private String Author = "Plugin Author";
    private String Description = "Plugin Description"
    private Player p = new Player();

    @Override
    public void onLoad() 
    {
        p.talk("Testing");
    }
}

この問題は、私を 1 週間前から追い詰めており、どうすればよいかわかりません。:/

4

1 に答える 1

3

よくわかりませんが、作成したクラスローダーに親クラスローダーを提供してみてください。

ClassLoader parent = Thread.currentThread().getContextClassLoader();
// or
// ClassLoader parent = getClass().getClassLoader();
ClassLoader loader = new URLClassLoader(new URL[] { new File("C:/Plugin/Directory/").toURI().toURL() }, parent);
于 2012-10-08T07:59:31.300 に答える