0

Windows 7 を実行しており、Java で次のコマンドを使用して実行しようとしている exe ファイルがあります。

File dir = new File("C:\\PATH\\TO\\DIR");
String[] cmdArray = {"file.exe"};

if(dir.exists()){
    for(String s : dir.list()){
        if(s.equals(cmdArray[0]))
            System.out.println("File exists!");
    }
}

Runtime.getRuntime().exec(cmdArray,null,dir);

ただし、exec(...) コマンドを実行すると、次のエラーが表示されます。

Cannot run program "file.exe" (in directory "C:\PATH\TO\DIR"): CreateProcess error=2, The system cannot find the file specified

上記のコードは、「ファイルが存在します!」と出力します。そのため、ファイルはそこにあり、Java はそれがそこにあることを認識しています。これがどのように可能かわかりません。

また、Runtime.getRuntime().exex(...) を使用する必要があります。この呼び出しは、実際には変更しないと思われる別のメソッド内にあるため、代替ソリューションは機能しません。前もって感謝します!

編集: 管理者権限なしでコマンド ウィンドウでファイルを実行したところ、次のメッセージが表示されました。

Error in Opening Configuration File in Read Mode

したがって、許可の問題があると思います。実行できるようにするには、どのようにアクセス許可を変更すればよいですか?

EDIT2:

cmdArray をこれに変更してみました:

String[] cmdArray = {"C:\\PATH\\TO\\DIR\\file.exe"};

そしてそれは魅力のように機能しました。1つ質問ですが。なぜこれが機能したのに、他の方法では機能しなかったのですか? 私は、Runtime.exec() が cmd wibndow のように高レベルで実行されると想定しました。

pushd dir
cmdArray[0] cmdArray[1] cmdArray[2] ... cmdArray[length - 1]
popd dir

これは間違った仮定ですか?

4

2 に答える 2

0

おそらく、ディレクトリをパスに含める必要があります。この質問このチュートリアルをご覧ください

于 2013-05-01T17:36:24.840 に答える
0

C ドライブでアクセス許可の問題が発生しています。C ドライブ"file.exe"で手動で実行して確認してください。より良い解決策は"file.exe"、C ドライブ以外の場所に保存して、そこから実行することです。

于 2013-05-01T16:02:35.140 に答える