2

javaこのようにシェルコマンドを実行しようとします

if (Program.isPlatformLinux())
{
    exec = "/bin/bash -c xdg-open \"" + file.getAbsolutePath() + "\"";
    exec2 = "xdg-open \"" + file.getAbsolutePath() + "\"";
    System.out.println(exec);
}
else
{
    //other code
}
Runtime.getRuntime().exec(exec);
Runtime.getRuntime().exec(exec2);

しかし、何も起こりません。このコードを実行する/bin/bash -c xdg-open "/home/user/Desktop/file.txt"と、コンソールに出力されますが、ファイルは開きません。また、最初に bash を呼び出してからxdg-open-command を呼び出してみましたが、変化はありません。

ここで何が問題で、どうすれば解決できますか?

編集:呼び出しの出力は次のようになります。

xdg-open "/home/user/Desktop/files/einf in a- und b/allg fil/ref.txt" xdg-open: 予期しない引数 'in'

しかし、これは私には非常に奇妙に思えます-inパス全体が引用符で囲まれている前に、コマンドが分離されているのはなぜですか?

4

1 に答える 1