2

実行する必要があるファイルへのパスをユーザーに入力するように求める Java プログラムがあります。

パスはたとえば次のようになります。このパスでオブジェクトC:/ProgramFiles/Citrix/ICA Client/pnagent.exeを作成し、Fileそれが存在することを確認し、それがファイルであることを確認し、実行可能であることを確認します。関係する限りFile、存在するのは完全に有効なオブジェクトです。

注: File オブジェクトは「スクリプト」と呼ばれます

しかし、スクリプトを実行すると、スペースでエラーが発生します。

Runtime rt = java.lang.Runtime.getRuntime();
Process pp = rt.exec(script.getAbsolutePath());

最初の行は 100% 正しく機能します。私が受け取ったエラーは以下の画像です: (私は JOptionPane に表示しています。)

エラー画像

エラーを取り除く最良の方法は何ですか? ありがとうございます!


試行された解決策 #1: Process pp = rt.exec("\""+script.getAbsolutePath()+"\"");

私が使うとき、私はC:\Tools\IT Support\bookmark.htm得る ここに画像の説明を入力

4

2 に答える 2

4

編集:
最も信頼できる方法は、Runtime.exec(String[] cmdarray)を使用することです。

Runtime.exec(String command)を使用する場合、Java は空白でコマンドを分割するだけです。

コマンド文字列は、 new StringTokenizer(command) の呼び出しによって作成された StringTokenizer を使用してトークンに分割され、文字カテゴリはそれ以上変更されません。トークナイザーによって生成されたトークンは、新しい文字列配列 cmdarray に同じ順序で配置されます。

g++も参照してください: ファイルが見つかりません

または、次のようなProcessBuilderを使用します。

ProcessBuilder pb = new ProcessBuilder("ln", "-s", "dir1/dir2", "my dir/dir2");
Process p = pb.start();
于 2013-08-13T18:46:16.877 に答える
1

試す

String[] commands = {"cmd", "/c", "start", "\"DummyTitle\"",script.getAbsolutePath()};
Runtime.getRuntime().exec(commands);

これは Windows のみのソリューションです。

「ファイル関連付け」メカニズムが必要なため、java.awt.Desktopがおそらくより良い解決策です。

public static void open(File document) throws IOException {
    Desktop dt = Desktop.getDesktop();
    dt.open(document);
}
于 2013-08-13T22:24:57.270 に答える