1

Linux で実行する実行可能ファイルを取得する Java プログラムを作成しようとしています。この実行可能ファイルは 2 つのパラメーターを受け取り、指定された 2 つのパラメーターを使用してnmap -sP操作を実行します。

このファイルをfile.exeと呼び、その内容は次のとおりです。

nmap -sP $segment1-$segment1

私はすでに a を実行しましたがchmod +x file.exe、それは が存在する同じディレクトリにあり.class ます。

Java コードは次のとおりです。

import java.lang.Runtime;
import java.lang.Process;
import java.io.IOException;
import java.lang.InterruptedException;

    public class runFile {

        public static void main (String args[]) throws IOException, InterruptedException {


            Runtime r = Runtime.getRuntime();
            Process p = r.exec("file.exe "+args[0]+" "+args[1]);
            p.waitFor();
        }


    }

コンパイル後、(file.exeがある場所から)実行しようとするたびに

java runFile

次の例外とエラー ログが表示されます。

スレッド「メイン」の例外 java.io.IOException: プログラム「file.exe」を実行できません: エラー = 2、java.lang.ProcessBuilder.start(ProcessBuilder.java:1041) の java.lang にそのようなファイルまたはディレクトリはありません。 Runtime.exec(Runtime.java:617) で java.lang.Runtime.exec(Runtime.java:450) で java.lang.Runtime.exec(Runtime.java:347) で runFile.main(runFile.java:12) ) 原因: java.io.IOException: error=2, No such file or directory at java.lang.UNIXProcess.forkAndExec(Native Method) at java.lang.UNIXProcess.(UNIXProcess.java:135) at java.lang. ProcessImpl.start(ProcessImpl.java:130) at java.lang.ProcessBuilder.start(ProcessBuilder.java:1022) ... 4 詳細

私は何が欠けていますか?

4

2 に答える 2

2

エラーは、実行可能ファイルが現在のディレクトリまたは OS の検索パスに見つからないことを示しています。

コマンドのPathans部分を含めてみてください

Process p = r.exec("/path/to/file.exe "+args[0]+" "+args[1]);

また、各コマンド/引数を個別のパラメーターとして分離することも検討する必要があります

Process p = r.exec(new String[]{"/path/to/file.exe ", args[0], args[1]});

これは、スペースを含むパラメーターに役立ちます。

の使用も検討する必要がありProcessBuilderます。これにより、コマンドを実行するディレクトリ コンテキストを変更できます。

于 2013-08-24T21:52:57.177 に答える
0

Java プログラムはfile.exe、Java プログラムを開始したディレクトリを検索します。クラスファイルのあるディレクトリ内は調べません。

于 2013-08-24T21:49:10.607 に答える