[解決済み] CreateProcess error=2, The system cannot find file specified.
2022-01-29 06:53:42
質問
javaでプログラムを書いています。
h:\myjar.jar
をフォルダにコピーします。
h:\new
. 私のJavaのコードは次のようなものです。
import java.io.File;
import java.io.IOException;
public class MainClass {
public static void main(String[] args) {
Runtime r = Runtime.getRuntime();
Process p = null;
try {
File dir = new File("C:/Program Files/WinRAR");
p = r.exec("winrar x h:\\myjar.jar *.* h:\\new", null, dir);
} catch (IOException e) {
e.printStackTrace();
}
}
}
これを実行すると、次のようなエラーが発生します。
java.io.IOException: Cannot run program "winrar" (in directory "C:\Program Files\WinRAR"): CreateProcess error=2, The system cannot find the file specified
at java.lang.ProcessBuilder.start(Unknown Source)
at java.lang.Runtime.exec(Unknown Source)
at java.lang.Runtime.exec(Unknown Source)
at MainClass.main(MainClass.java:16)
Caused by: java.io.IOException: CreateProcess error=2, The system cannot find the file specified
at java.lang.ProcessImpl.create(Native Method)
at java.lang.ProcessImpl.<init>(Unknown Source)
at java.lang.ProcessImpl.start(Unknown Source)
... 4 more
なぜこのような問題が発生するのか、どなたか教えていただけませんか。この問題を解決するために、私はどのような変更をコードに加える必要があるのでしょうか?
解決方法を教えてください。
と仮定すると
winrar.exe
が
PATH
であれば
Runtime.exec
はそれを見つけることができますが、そうでない場合は、その完全修飾パスを指定する必要があります。
winrar.exe
がインストールされるのは
C:/Program Files/WinRAR
のようなものを使う必要があります。
p=r.exec("C:/Program Files/WinRAR/winrar x h:\\myjar.jar *.* h:\\new");
個人的には
ProcessBuilder
を使用することで、いくつかの追加設定機能を使用することができます。 また、可能であれば、コマンドとパラメータを別々の
String
その方が、1つの
String
変数など...
ProcessBuilder pb = new ProcessBuilder(
"C:/Program Files/WinRAR/winrar",
"x",
"myjar.jar",
"*.*",
"new");
pb.directory(new File("H:/"));
pb. redirectErrorStream(true);
Process p = pb.start();
の内容を読むことを忘れないでください。
InputStream
プロセスを停止させる可能性があります。
関連
-
[解決済み】Hibernateエラー:同じ識別子値を持つ別のオブジェクトがすでにセッションに関連付けられました。
-
[解決済み】指定された子にはすでに親がいます。先に子の親に対してremoveView()を呼び出す必要がある(Android)
-
[解決済み】宣言されたパッケージが期待されるパッケージと一致しない ""
-
[解決済み] 解決済み】Javaが「型をインスタンス化できない」というエラーを返す [重複] [重複]
-
[解決済み] メソッドがスーパータイプのメソッドをオーバーライドまたは実装していない - Overrideの場合
-
[解決済み】非閉鎖文字リテラルエラー
-
[解決済み] メソッドがそのスーパークラスのメソッドをオーバーライドしない
-
[解決済み】Javaでユーザー入力を待機させる方法
-
[解決済み】koch snowflake java recursion
-
[解決済み】接続Java - MySQL : 公開鍵の取得は許可されていません。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Hibernateエラー:同じ識別子値を持つ別のオブジェクトがすでにセッションに関連付けられました。
-
[解決済み】エラー:'if'のない'else'エラー
-
[解決済み】Javaの".class期待値"
-
[解決済み】popBackStack()とreplace()の操作はどう違うのですか?
-
[解決済み】不正なエスケープ文字"㊧"について
-
[解決済み】"|="の意味は何ですか?(パイプ等号演算子)
-
[解決済み】ResultSetの例外 - 結果セットの開始前
-
[解決済み】Eclipseで「公開型 <<classname>> は独自のファイルで定義する必要があります」エラー【重複あり
-
[解決済み】java.io.IOException: 壊れたパイプ
-
[解決済み] StringBuilderをクリアまたは空にするにはどうすればよいですか?重複] [重複] [重複] [重複] [重複] [重複