ここにはすでに似たような質問がたくさんあることは知っていますが、それらからよりスマートな質問を得ることができませんでした。jar ファイル内にクラスをロードしたいのですが、この時点では問題ありませんが、独自の ClassLoader にパスを渡すと、例外がスローされ、クラスが見つかりません。絶対パスを使用して jar 内にクラスをロードすることは可能ですか? 例えば、Class cls = loader.loadClass(/path/MyPlugin.jar/MyPlugin.class);
しかし、私がこれを行うとき:
File test = new File("path/plugins/MyPlugin.jar/MyPlugin.class");
System.out.println(test.exists());
それはfalseを出力します。私はそれが何を意味するのかよくわかりませんが、ウェブで時々見たMyPlugin.jar!/MyPlugin.class
orを使ってみました...MyPlugin.jar.jar!MyPlugin.class
これを行うと、クラスが見つかります:
URLClassLoader loader = new URLClassLoader(new URL[] { "path/plugins/MyPlugin.jar" });
Class cl = loader.loadClass("MyPlugin");
しかし、今、どうすればパスを受け取ることができますか? のようなものURL url = cl.getResource("MyPlugin");
(nullを返す)