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"});

このコードを実行しようとしましたが、奇妙な問題に直面しています。正しくコンパイルされます(最初の行がプログラムをコンパイルすることを意味します)が、2番目の行は次のようなエラーを出します'a' not found。しかし、私がチェックしたとき、与えられたディレクトリa.classファイルは正しく作成されました。2行目を正しく実行するにはどうすればよいですか?

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 に答える