2012-07-04 190 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"});