0

別の Java プログラム (exec.java) から Java ファイル (editor.java) を実行しようとしています。入力を受け取り、ファイルが見つからないというメッセージを表示します。プログラムを正常に実行する方法を教えてください。

    import java.io.*;
    public class exec {

    public static void main(String argv[]) {
    try {
    InputStreamReader isr=new InputStreamReader(System.in);
    BufferedReader br=new BufferedReader(isr);

    System.out.println("Enter the java class name");
    String s=br.readLine();
    String[] cmd = {"java", "-cp", "E:\netbeans\Project\src", s};
    Process pro=Runtime.getRuntime().exec(s);
    try (BufferedReader in = new BufferedReader(new InputStreamReader(pro.getInputStream()))) {
        String line=null;
        while((line=in.readLine())!=null) {
            System.out.println(line);
        }
        }
        } catch(Exception err) {
    err.printStackTrace();
   }
 }


java.io.IOException: Cannot run program "editor.java": CreateProcess error=2, The system   cannot find the file specified
at java.lang.ProcessBuilder.start(ProcessBuilder.java:1029)
at java.lang.Runtime.exec(Runtime.java:615)
at java.lang.Runtime.exec(Runtime.java:448)
at java.lang.Runtime.exec(Runtime.java:345)
at project.exec.main(exec.java:18)
4

4 に答える 4

3

.class fileコマンドライン引数にあなたを渡す必要があります。コマンドで.javaファイルを実行しません。java

あなたをeditor含むクラスmain methodeditor.class.

また、以下の回答に従ってください@Azodious's

arrayまた、のパスを を含むパスに変更する必要がある場合もありますclass filesrcフォルダにあなたのファイルがない可能性がありますclass file

したがって、次を使用してプログラムを実行しますjava exec editor。私はそれがうまくいくと思います。

于 2012-10-30T06:05:05.363 に答える
1

execコマンド配列をメソッドに渡していない

次のように変更します。

Process pro=Runtime.getRuntime().exec(cmd);

そして、あなたのエラーはあなたがsrcファイルを実行しようとしていることを示しています:

Cannot run program "editor.java"

を実行するには、を渡す必要があり.class file nameます。

于 2012-10-30T06:05:48.623 に答える
0

E:\ netbeans \ Project \ src内で、ソースファイルのみが見つかりました。ソースファイルuを実行できませんでした、、、

* E:\ netbeans \ project \ build \classes*内にあるクラスファイルで実行してみてください

String[] cmd = {"class", "-cp", "E:\netbeans\project\build\classes\", s};

注:クラスパスを確認してください

ありがとうございました

于 2012-10-30T06:08:16.223 に答える
0

複数の問題 -

  1. コマンドラインからコマンド「editor.java」を実行しようとしています。コマンド配列は未使用のままです。
  2. コンパイルされたクラスはソースと同じディレクトリにありますか? 通常、Eclipse では、クラスはbinフォルダーに生成されます。あなたはするべきです -

    String[] cmd = {"java", "-cp", "E:\netbeans\Project\bin", s};
    Process pro=Runtime.getRuntime().exec(s);

  3. あなたeditor.javaはデフォルトのパッケージに入っていますか?そうでない場合は、コマンドの実行時に完全修飾名を入力する必要があります。

コマンドラインからクラスを実行してから、Java コードから同じコマンドを作成することをお勧めします。

于 2012-10-30T06:10:41.823 に答える