3

外部 Java ファイル (a.java など) をコンパイルする必要があります。これは私が同じために書いたコードです。

(文字列パスには、Java およびクラス ファイルへのパスが含まれます)

    command[0] = "javac";
    command[1] = path+"a.java";
    p = Runtime.getRuntime().exec(command);        

上記のコードは問題なく動作するようです。しかし、以下のコード

    command[0] = "java";
    command[1] = "a";
    command[2] = "-cp";
    command[3] = "."+path+"a";
    p = Runtime.getRuntime().exec(command);        
    stdInput = new BufferedReader(new InputStreamReader(p.getInputStream()));
    stdError = new BufferedReader(new InputStreamReader(p.getErrorStream()));
    while ((temp = stdInput.readLine()) != null) result += "\n" + temp;
    while ((temp = stdError.readLine()) != null) result += "\n" + temp;

次のエラーが発生します

java.lang.NoClassDefFoundError: a
Exception in thread "main" 

誰かがこのコードの問題を説明できますか? ありがとう !

4

1 に答える 1

4

最初にクラス名を指定し、次にクラスパスの引数を指定しています。クラス名は常に、プログラム固有の引数の前に来る最後のものです。したがって、あなたの場合、クラスパス部分はオプションとして扱われません-cp.Javaプログラム自体への2つの引数(およびパス)と見なされます。

したがって、代わりに:

java a -cp (whatever)

あなたが欲しい

java -cp (whatever) a
于 2013-01-20T17:00:57.003 に答える