1
JARでメソッドを実行すると、メソッドはpublic static SomeType getValue()
のようになります。JARファイルのクラスから値を取得する
私は、リフレクションを使用しようとしましたが、それは大丈夫に見えた:
URLClassLoader classLoader = new URLClassLoader(new URL[]{jarFile.toURI().toURL()}, Main.class.getClassLoader());
Class targetClass = classLoader.loadClass("some.package.TargetClass");
Class targetType = classLoader.loadClass("some.package.SomeType");
Method getValueMethod = targetClass.getMethod("getValue");
しかし、このように戻り値を取得中:
targetType value = targetClass.cast(getValueMethod.invoke(null));
value
のタイプはtargetType
することはできません、それはないですか?しかし、タイプSomeType
は、JARファイル内にあるので、私はその後SomeType value = ~~
のように行うことはできませんが、どのように私はきちんとgetValue()
の値を取得し、そのデータにアクセスすることができますか?
反射も使用します。しかし、なぜあなたはそれをやっていますか?クラスパスにjarファイルがないのはなぜですか?より高いレベルで、何を達成しようとしていますか? –
'jarFile'は動的に変更できるためです。しかし、クラスパスの設定は静的な方法です。 – QueN