2017-07-28 3 views
0

私はある時点でcmdファイルを実行するJavaプログラムを作成しています。 両方が同じディレクトリにあります。java実行cmdファイルが失敗する

私はProcessBuilderをより柔軟に使用しています。私はこのコードを実行すると しかしそれは失敗します。それが動作するよりも、私はこれらの行をコメントアウトするとき、しかし

java.io.IOException: Cannot run program "C:\test\myCmdFile.cmd" (in directory "C:\test"): No such file or directory 
    at java.lang.ProcessBuilder.start(Unknown Source) 
    at org.java.test.executeCmdFile(MyMainClass.java:189) 
    at org.java.test.main(MyMainClass.java:70) 
Caused by: java.io.IOException: No such file or directory 
    at java.lang.ProcessImpl.openForAtomicAppend(Native Method) 
    at java.lang.ProcessImpl.newFileOutputStream(Unknown Source) 
    at java.lang.ProcessImpl.start(Unknown Source) 
    ... 3 more 

String current_directory = System.getProperty("user.dir"); 

ProcessBuilder builder=new ProcessBuilder(current_directory+"\\"+ "myCmdFile.cmd"); 
builder.directory(new File(current_directory)); 
File log = new File("log.txt"); 
builder.redirectErrorStream(true); 
builder.redirectOutput(Redirect.appendTo(log)); 
Process process=builder.start(); 
process.waitFor(); 
System.out.println("CMD file executed"); 

私はこの例外を取得

ProcessBuilder builder=new ProcessBuilder(current_directory+"\\"+ 
    "myCmdFile.cmd"); 
    //builder.directory(new File(current_directory)); 
    //File log = new File("log.txt"); 
    // builder.redirectErrorStream(true); 
    // builder.redirectOutput(Redirect.appendTo(log)); 
    Process process=builder.start(); 
    process.waitFor(); 
    System.out.println("CMD file executed"); 

私が必要これらの行は、ログメッセージが必要です。

+0

current_directoryには絶対パス? –

+0

@アレキサンダーええ、泣いて、その行を忘れました(私は私の質問を編集しました)。 – Norbert94

+0

申し訳ありませんが、私はコーヒーが必要なようです。 – GhostCat

答えて

0

私はそれが愚かなone..Thisコードが実際に動作した...私のエラーを検出しました:

String current_directory = System.getProperty("user.dir"); 

ProcessBuilder builder=new ProcessBuilder(current_directory+"\\"+ "myCmdFile.cmd"); 
builder.directory(new File(current_directory)); 
File log = new File("log.txt"); 
builder.redirectErrorStream(true); 
builder.redirectOutput(Redirect.appendTo(log)); 
Process process=builder.start(); 
process.waitFor(); 
System.out.println("CMD file executed"); 

問題は、この行だった:それはだった私の本番環境では

File log = new File("log.txt"); 

長い道のり(これは間違っていた)ですが、ここで質問を投稿する前にデモンストレーションの目的で私はそれを変更しました。私は問題がcmd-fileと結びついていると思っていましたが、例外は私に言いました。今度はログファイルの正しいパスを与えた後、すべての人に作用します。

関連する問題