Javaのランタイムexecを使用してブラウザを起動し、Webページをロードします。正確な呼び出しは次のようになります。私の場合はWindowsでのJava Runtime Execが引数のUnicodeで失敗する
String[] explorer = {"C:\\Program Files\\Internet Explorer\\IEXPLORE.EXE",
"-noframemerging",
"C:\\ ... path containing unicode chars ... \\Main.html"};
Runtime.getRuntime().exec(explorer);
、パスは、文字&#のx65e5を"\u65E5\u672C\u8A9E"
が含まれています;&#のx672c;&#のx8a9e ;.
どうやらこれは、Javaのバグです: http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4947220
私の質問は:単にJavaを使用して行うことができる実行可能な回避策はありますか?このためにJNIライブラリを書くことは可能ですが、可能ならばそれを避けたいと思います。私はasciiとしてパスをURIエンコーディングし、バッチファイルにコマンドを書き込むことを試みましたが、成功しませんでした。
ProcessBuilderはコマンド引数文字列でユニコードと同じ問題を抱えているようです。私は残念ながら私の特別なケースでは外の図書館を持ち込むことができません。 – Bear
getPath()メソッドを使用して変数への引数を初期化し、ソースコード内でユニコード以外のものに触れることなくProcessBuilderでそれらを使用する方法はありますか? – israkir
Apache Commons Execは内部的にRuntime.exec()APIを使用しますが、以前と同じ問題が残ります。 – Renan