2017-04-08 18 views
0

私はいくつかの.exeファイルを実行することに戸惑っていて、appdataで実行しているものがブロックされているように見えますか?ランタイムexecはappdataでプログラムを実行できませんか?

Runtime.getRuntime().exec(System.getenv("APPDATA") + "test.exe"); 

これは、私はそれはOS固有のエスケープを必要とするあなたは、プレーンのexec(String)メソッドを使用してはならない

java.io.IOException: Cannot run program "C:\Users\Cole": CreateProcess error=2, The system cannot find the file specified 
+0

スペースをエスケープしていません。 – Siguza

+0

BTWに関連する3つの質問がありますが、答えについてもう少し詳しく説明します。 – eckes

答えて

1

を取得エラーです。 string array versionを使用する場合は、実行可能ファイルを見つける必要があります。

変数が存在するかどうか、そしてファイル名を連結する前に\で終わるかどうかを確認することもお勧めします。あるいは、階層的なFileコンストラクタを使うのが良いでしょう。

String appdata = System.getenv("APPDATA"); 
if (appdata == null || appdata.trim().isEmpty()) 
    appdata="."; 
String fileName = new File(appdata, "test.exe").getAbsolutePath(); 
Runtime.getRuntime().exec(new String[]{fileName /*, noargs */}); 
+0

これを行う方法の例を教えてください。 –

0

これを行う簡単な方法は、Fileオブジェクトを使ってパスを構築することです。

final String f = new File(System.getenv("APPDATA"), "test.exe").toString(); 
final Process p = Runtime.getRuntime().exec(new String[] { f }); 
関連する問題