3

以前の質問で、リモート jar ファイルをロードする方法を尋ねました。私の現在のコードはこれです:

//f is the path to the jar
URLClassLoader loader = new URLClassLoader(new URL[]{f.toURI().toURL()});
Class<?> jarClass = Class.forName(main, true, loader);
Class<? extends Module> module = jarClass.asSubclass(Module.class);

Constructor<? extends Module> constructor = module.getConstructor();
System.out.println(constructor);

Module module = constructor.newInstance();

これはうまく機能しますが、リモートでロードされたモジュールは、それらをロードしている jar 内にあるクラスを拡張し、次のエラーが発生します。

原因: java.lang.ClassNotFoundException: package.whatever.Module。これは、getClass().getClassLoader(). の代わりに URLClassLoader を使用しているためだと推測されます。 ?

ありがとう、
バート

4

2 に答える 2

0

私は同じ問題に直面し、Java 9 を使用していましたが、Java 8 にダウングレードすると問題が解決しました。

于 2018-03-13T11:08:19.740 に答える