1. ホーム
  2. java

[解決済み] Javaランタイムを使用して "cd "コマンドを使用するには?

2022-02-19 20:03:57

質問

Ubuntu 10.04のターミナルで"cd"コマンドを使用してディレクトリを変更しようとするスタンドアロンJavaアプリケーションを作成したのですが、どのようにすればいいですか?以下のコードを使用しました。

String[] command = new String[]{"cd",path};
Process child = Runtime.getRuntime().exec(command, null);

しかし、上記のコードでは次のようなエラーが発生します。

Exception in thread "main" java.io.IOException: Cannot run program "cd": java.io.IOException: error=2, No such file or directory

どなたか実装方法を教えてください。

どのように解決するのですか?

という実行ファイルがありません。 cd なぜなら、それは できない 別プロセスで実装される。

問題は、各プロセスが独自のカレントワーキングディレクトリを持っていることであり、それを実装することで cd を別プロセスとして変更するだけです。 その は、カレントワーキングディレクトリを処理します。

Javaプログラムでは はできません。 カレントワーキングディレクトリを変更する必要はありませんし、その必要もありません。単純にファイルの絶対パスを使用してください。

現在の作業ディレクトリが問題になるのは、外部プロセスを実行する場合です ( ProcessBuilder または Runtime.exec() ). このような場合、新しく開始されたプロセスに使用する作業ディレクトリを明示的に指定することができます ( ProcessBuilder.directory() と、その 3つの引数 Runtime.exec() それぞれ)を使用します。

注意:現在の作業ディレクトリを読み取るには システムプロパティ user.dir . という誘惑に駆られるかもしれません。 セット というシステムプロパティがあります。ただし、そうすると 非常に悪い不整合 なぜなら ではありません。 というのは 書き込み可能 .