Java 使用Toolprovider编译类并使用ClassLoader加载它们
我试图加载在运行时生成编译的类。我可以编译这些代码而不会有任何问题:Java 使用Toolprovider编译类并使用ClassLoader加载它们,java,classloader,urlclassloader,Java,Classloader,Urlclassloader,我试图加载在运行时生成编译的类。我可以编译这些代码而不会有任何问题: JavaCompiler compiler = ToolProvider.getSystemJavaCompiler(); StandardJavaFileManager fileManager = compiler.getStandardFileManager(null, null, null); List<File> sourceFileList = new ArrayList<File>();
JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();
StandardJavaFileManager fileManager = compiler.getStandardFileManager(null, null, null);
List<File> sourceFileList = new ArrayList<File>();
sourceFileList.add(new File(sourceFile));
Iterable<? extends JavaFileObject> compilationUnits = fileManager.getJavaFileObjectsFromFiles(sourceFileList);
CompilationTask task = compiler.getTask(null, fileManager, null, null,null, compilationUnits);
或
没有成功(我不理解这些…)。你能帮我吗?或者给我一个简单的ho的例子,这样我就可以发展它了
提前感谢。您的最后一次尝试应该会成功
myUrl
应该引用包含生成的.class的目录(或Jar)
myUrl = new URL("file:///myGeneratedCode/");
url必须以
“/”
结尾才能被视为目录,否则,它将假定为Jar文件。您的最后一次尝试应该可以myUrl
应该引用包含生成的.class的目录(或Jar)
myUrl = new URL("file:///myGeneratedCode/");
url必须以
“/”
结尾才能被视为目录,否则,它将假定为Jar文件。我终于找到了“问题”。我犯了一个愚蠢的错误:我试图在关闭生成的java文件之前编译它。恼人的是JavaCompiler没有抛出任何异常
解决了这个问题并生成了类之后,我再也不用用类加载器加载它了
再次感谢。我终于找到了“问题”。我犯了一个愚蠢的错误:我试图在关闭生成的java文件之前编译它。恼人的是JavaCompiler没有抛出任何异常 解决了这个问题并生成了类之后,我再也不用用类加载器加载它了
再次感谢。您通过了课程的正确路径吗?您通过了课程的正确路径吗?好的,谢谢。但我不知道为什么在执行“task.call()”之后,任何地方都不会生成任何类,也不会在控制台或使用诊断报告任何错误。好的,谢谢。但我不知道为什么在执行“task.call()”之后,任何地方都不会生成任何类,也不会在控制台或使用诊断报告中报告任何错误。
myUrl = new URL("file:///myGeneratedCode/");