在运行时执行java命令

时间:2012-07-04 06:21:12

标签: java

Process process2 = Runtime.getRuntime().exec(new String[]{"javac","-g:vars","/Users/amol/Documents/Java/a.java"});
Process process3 = Runtime.getRuntime().exec(new String[]{"javap","-l","-c","/Users/amol/Documents/Java/a"});

我尝试运行此代码,但我遇到了一个奇怪的问题。它正确编译(意味着第一行编译程序)但第二行给出了'a' not found的错误。但是,当我检查给定目录a.class时,文件是否已正确创建。我该如何正确运行第二行?

2 个答案:

答案 0 :(得分:2)

javap采用类名,而不是文件名。您可能想要执行:

javap -l -c -classpath /Users/amol/Documents/Java a

(当然,将其分成适当的字符串参数。)

请注意,如果a位于包中,或者a.java中的类实际上不是a(对于非公共类有效),这仍然会失败)。在这两种情况下,您都需要确定所涉及的类,可能是通过构建一个空目录并找出javac生成的文件。

答案 1 :(得分:1)

您可能必须将javap的classpath参数指定到类的目录。

Process process3 = Runtime.getRuntime().exec(new String[]{"javap","-l","-c","-classpath  \"/Users/amol/Documents/Java/\"","a"});