1
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文件是否正确创建时。我应该如何正确运行第二行?

4

2 回答 2

2

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

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

(当然,将其适当地拆分为字符串参数。)

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

于 2012-07-04T06:28:36.540 回答
1

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

Process process3 = Runtime.getRuntime().exec(new String[]{"javap","-l","-c","-classpath  \"/Users/amol/Documents/Java/\"","a"}); 
于 2012-07-04T06:29:23.883 回答