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
时,文件是否已正确创建。我该如何正确运行第二行?
答案 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"});