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
文件已正确创建。我应该如何正确运行第二行?
最佳答案
javap
采用类名,而不是文件名。你可能想要执行:
javap -l -c -classpath /Users/amol/Documents/Java a
(当然,将其适本地拆分为字符串参数。)
请注意,如果 a
在包中,或者如果 a.java
中的类实际上不是 a
,这仍然会失败完全(对非公共(public)类(class)有效)。在这两种情况下,您都需要确定所涉及的类,可能是通过构建一个空目录并找出哪些文件是由 javac
生成的。
关于java - 在运行时执行java命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11323434/