リフレクションを使用して、新しく作成された Java クラスのすべてのメソッドを取得したいと考えています。以下のように、別のファイルからコピーして Java クラスを作成し、JavaCompiler を使用して新しく作成した Java をコンパイルします。しかし、なぜターゲット クラス ファイルが作成されなかったのかはわかりません。PS: 間違ったソース ターゲット Java ファイル パスを指定すると、"javac: cannot find file: codeGenerator/Service.java"
. 皆さん、ありがとうございました。
private static Method[] createClassAndGetMethods(String sourceFilePath) throws IOException {
File targetFile = new File("Service.java");
File sourceFile = new File(sourceFilePath);
Files.copy(sourceFile, targetFile);
JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();
compiler.run(null, null, null, targetFile);
Thread.sleep(5000);
//After the Service.java compiled, use the class getDeclaredMethods() method.
Method[] declaredMethods = Service.class.getDeclaredMethods();
return declaredMethods;
}
コンパイル方法:
JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();
compiler.run(null, null, null, targetFile);