Я хочу запустить браузер и загрузить веб-страницу с помощью должностного лица Java Во время выполнения. Точный вызов похож на это:
String[] explorer = {"C:\\Program Files\\Internet Explorer\\IEXPLORE.EXE",
"-noframemerging",
"C:\\ ... path containing unicode chars ... \\Main.html"};
Runtime.getRuntime().exec(explorer);
В моем случае путь содержит "\u65E5\u672C\u8A9E"
, символы 日本語.
По-видимому, это - ошибка Java: http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4947220
Мой вопрос: существует ли жизнеспособное обходное решение, которое может быть сделано только с помощью Java? Кажется, что возможно записать библиотеку JNI для этого, но я хотел бы избежать этого, если это возможно. Я попробовал кодирование URI путь как ASCII и запись команд к пакетному файлу без успеха.
Я рассмотрел два решения, каждое из которых является более или менее обходным путем:
Создайте временный файл перенаправления html, который будет перенаправлять браузер на нужную страницу. Обратите внимание, что IE ожидает незашифрованный Unicode для локальных файлов, тогда как другие браузеры могут принимать только пути к файлам в кодировке uri
Используйте короткое имя файла для файла Windows. Он не будет содержать символы Unicode.
Думаю, вы можете использовать библиотеку Apache Commons Exec или ProcessBuilder , чтобы попробовать;)