我正在寻找编译java文件的方法,我知道你可以使用javac Test.java
从命令行编译Java文件,但有没有办法将此调用传递给命令行?使用命令行通过Java文件编译文件
还有一种方法让命令行以相同的方式编译.tar文件...像javac -tar Test.tar
(从Java文件传递命令)..或者什么是最好的方式来做到这一点?
对不起我不是很擅长CMD命令
我正在寻找编译java文件的方法,我知道你可以使用javac Test.java
从命令行编译Java文件,但有没有办法将此调用传递给命令行?使用命令行通过Java文件编译文件
还有一种方法让命令行以相同的方式编译.tar文件...像javac -tar Test.tar
(从Java文件传递命令)..或者什么是最好的方式来做到这一点?
对不起我不是很擅长CMD命令
Runtime rt = Runtime.getRuntime();
Process pr = rt.exec("javac Test.java");
您可以从Java中使用Runtime类,例如运行系统命令
Process p = Runtime.getRuntime().exec("javac Test.java");
p.waitFor();
BufferedReader reader = new BufferedReader(new InputStreamReader(p.getInputStream()));
String line;
while((line = reader.readLine()) != null) {
System.out.println(line);
}
只是在这里玩弄它,只是想知道你可以把它放在一个方法中,并在你想要的时候调用它是否必须在主方法中? ...'public static void main(String [] args) – 2012-07-19 17:58:59
它可以在一个方法中。 '公共无效执行(字符串命令)抛出异常{...}'那么你可以调用'execute('java Test.java')' – 2012-07-19 18:05:38
我相信你问的是如何将编译命令从java文件传递到命令行来编译另一个java文件。这可以像执行任何其他命令到命令行一样完成。在我看来,我使用流程构建器来处理所有事情,但是,这是使用.exec()
并将命令行编译命令作为字符串传递的绝佳示例。
试试这个....
Process p = Runtime.getRuntime().exec("javac Test.java");
Java提供的interface从程序调用编译器。
JavaCompiler compiler = ToolProvider
.getSystemJavaCompiler();
StandardJavaFileManager fileManager = compiler
.getStandardFileManager(null, null, null);
Iterable<? extends JavaFileObject> compilationUnits = fileManager
.getJavaFileObjectsFromStrings(Arrays.asList("MyClass.java"));
compiler.getTask(null, fileManager, null, null, null, compilationUnits).call();
fileManager.close();
我实际上正在寻找这种编译项目的方式,它似乎在编译,但是当您尝试编译具有多个类的项目,但它不能识别所有类(即调用另一个类的一个类),它正在编译所有类,但是针对其他类以及其他类的导入语句进行编译另一个班被称为......你知道为什么会发生这种情况吗? – 2012-07-20 08:04:55
您可能必须设置[classpath](http://stackoverflow.com/questions/1563909/how-to-set-classpath-when-i-use-javax-tools-javacompiler-compile-the-source)选项。 – 2012-07-20 19:45:37
在这里我要离开这个因为其他人已经发布正确答案:HTTP://docs.oracle.com/javase/1.5.0/docs/api/java/lang/Runtime.html – 2012-07-19 17:50:24
我想将这些参数从java传递到命令提示符 – 2012-07-19 17:51:30