我想使用反射来获取一个新创建的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);