【发布时间】:2012-06-04 22:18:19
【问题描述】:
我正在制作一个可以编写 .java 文件的工具,然后(希望)将这些文件编译为 .class 文件。在一个过程中,用户选择一个文件目录,其中写入了多个 .java 文件。现在我想让程序编译这些 Java 文件。
【问题讨论】:
标签: java file class compilation
我正在制作一个可以编写 .java 文件的工具,然后(希望)将这些文件编译为 .class 文件。在一个过程中,用户选择一个文件目录,其中写入了多个 .java 文件。现在我想让程序编译这些 Java 文件。
【问题讨论】:
标签: java file class compilation
JavaCompiler 是你的朋友。查看文档here
这里有一个关于如何使用编译器 API 的示例
JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();
DiagnosticCollector<JavaFileObject> diagnostics = new DiagnosticCollector<>();
StandardJavaFileManager fileManager = compiler.getStandardFileManager(diagnostics, null, null);
Iterable<? extends JavaFileObject> compilationUnits = fileManager.getJavaFileObjectsFromStrings(Arrays.asList("YouFileToCompile.java"));
JavaCompiler.CompilationTask task = compiler.getTask(null, fileManager, diagnostics, null,
null, compilationUnits);
boolean success = task.call();
fileManager.close();
【讨论】:
compiler 变量是null。确保您有正确的 Java 安装。看看这个寻求帮助java.net/node/688208
如果代码从 JRE 运行,JavaCompiler 将是 null。它需要一个JDK,其中包括tools.jar。
【讨论】: