以编程方式编译 .java 文件
Compile a .java File Programmatically
我想创建一个可以将 .java 文件编译为 .class 文件的程序,就像在这个网站上所做的那样:
Innovation website
我的问题是:
- 是否有我可以用来执行此操作的库?
- 我在哪里可以得到这个图书馆?
- 如果没有相应的库,我该怎么做?
JavaCompiler javac = ToolProvider.getSystemJavaCompiler();
Java编译器的 javadoc 展示了如何使用此 JDK 工具进行工作和编译。其中的一个片段:
File[] files1 = ... ; // input for first compilation task
JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();
StandardJavaFileManager fileManager = compiler.getStandardFileManager(null, null, null);
Iterable<? extends JavaFileObject> compilationUnits1 =
fileManager.getJavaFileObjectsFromFiles(Arrays.asList(files1));
compiler.getTask(null, fileManager, null, null, null, compilationUnits1).call();
这绝非易事。但是,通过 shell 调用 Java 编译器的通用方法(包含所有修饰)也并不容易,因此,这也适用于通过 Process.
进行的调用。
使用ProcessBuilder 执行系统命令。
安装 JDK 并形成命令 "javac JavaFileName" 将此传递给 ProcessBuilder 构造函数并调用方法 start()
您可以使用 Process
class 作为
Process pro=Runtime.getRuntime().exec("javac FileName.java", null, new File("\path"));
我想创建一个可以将 .java 文件编译为 .class 文件的程序,就像在这个网站上所做的那样: Innovation website
我的问题是:
- 是否有我可以用来执行此操作的库?
- 我在哪里可以得到这个图书馆?
- 如果没有相应的库,我该怎么做?
JavaCompiler javac = ToolProvider.getSystemJavaCompiler();
Java编译器的 javadoc 展示了如何使用此 JDK 工具进行工作和编译。其中的一个片段:
File[] files1 = ... ; // input for first compilation task
JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();
StandardJavaFileManager fileManager = compiler.getStandardFileManager(null, null, null);
Iterable<? extends JavaFileObject> compilationUnits1 =
fileManager.getJavaFileObjectsFromFiles(Arrays.asList(files1));
compiler.getTask(null, fileManager, null, null, null, compilationUnits1).call();
这绝非易事。但是,通过 shell 调用 Java 编译器的通用方法(包含所有修饰)也并不容易,因此,这也适用于通过 Process.
进行的调用。使用ProcessBuilder 执行系统命令。
安装 JDK 并形成命令 "javac JavaFileName" 将此传递给 ProcessBuilder 构造函数并调用方法 start()
您可以使用 Process
class 作为
Process pro=Runtime.getRuntime().exec("javac FileName.java", null, new File("\path"));