2012-07-04 70 views
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文件被正确创建。我应该如何正确运行第二行?在运行时执行java命令

+0

我运行此代码,它工作! – Shahryar

回答

2

javap需要一个类名,而不是文件名。你可能要执行:

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

(拆分成字符串参数恰当,当然)。

注意,如果a在包这仍然会失败 - 或者,如果在a.java ISN类”实际上根本就是a(这对非公开课有效)。在这两种情况下,您都需要确定涉及的类,可能是将其构建到一个空目录中,并找出javac生成哪些文件。

+0

非常感谢。它在添加classpath参数后工作.. :) –

1

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

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