URLClassLoader を使用して Java クラスをロードし、メソッド main を呼び出したいと考えています。以下のコードでは、最後の行でエラーが発生し、修正方法がわかりません。
(def classloader (URLClassLoader. (into-array files))) (定義クラス名 "example.Test") (def clazz (.. classloader (loadClass クラス名))) ; メソッド「メイン」を取得する最も効果的な方法ではないと思います ; 追加のフィードバックを歓迎します (def メソッド (first (filter #(= (. % getName) "main") (. clazz getMethods)))) (def args (make-array 文字列 1)) ; メソッド main(String[]args) に 1 つのコマンド ライン引数を指定します。 (aset args 0 "my-file") ; Java リフレクション API を使用して静的メソッドを呼び出そうとすると失敗します。 (. メソッドは nil args を呼び出します)
スレッド「メイン」での例外 java.lang.IllegalArgumentException: 引数の型が一致しません。コンパイル中:
それ以外の場合、クラスはデフォルトのクラスローダーでは使用できないことに注意してください。
(例.Test/メインの「myfile」)
失敗するでしょう。
ありがとう、パベル