Приложение JavaFX в комплекте работает с неанглийскими аргументами и выдает "Не удалось запустить JVM"
У меня проблема с запуском простого приложения JavaFX. Я использую родной упаковщик для сборки EXE. Я хочу запустить свое приложение из контекстного меню файла Windows, но когда я пытаюсь запустить приложение с параметрами:
> JavaFXApplication1.exe ąęć
и я получаю 2 ошибки:
Когда я запускаю приложение как jar-файл:
> java -jar JavaFXApplication1.jar ąęć
Приложение запущено с успехом и работает нормально.
Также, когда я запускаю приложение из этой команды:
> JavaFXApplication1.exe aec
все в порядке и приложение работает нормально.
Пример кода приложения:
package test;
import javafx.application.Application;
import javafx.stage.Stage;
public class Test extends Application {
@Override
public void start(Stage primaryStage) {
System.out.println("Started");
}
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
System.out.println("Args count: " + args.length);
launch(args);
}
}
Проигнорируйте, это приложение не закрывается.
Я думаю, что это точно такая же проблема, как описано здесь: https://bugs.openjdk.java.net/browse/JDK-8133034
Кто-нибудь решил это? Или есть кто-то, кто знает, как обойти эту проблему? Я пробовал java-версии с 1.8.40 до 1.8.72, но на каждой JVM не получалось. Это также не проблема окружающей среды, потому что я проверил это на 2 разных машинах (а также операционных системах).
Буду признателен за любую помощь.
1 ответ
В комментарии Jira упоминается, что это регрессия, начиная с версии JDK 8u40b06. Если возможно, один из способов - использовать более старый. Попробуй 8u40b05.
На данный момент, возможно, вы можете сохранить все командные аргументы в файле (названном в символах ASCII) и передать местоположение файла в качестве аргумента, чтобы прочитать фактические аргументы приложения.
Другой обходной путь (последнее средство?) Заключается в передаче символов в качестве экранированного Unicode. См. Преобразование экранированного символа Unicode обратно в реальный символ. Хотя по общему признанию это - уродливая и утомительная вещь, чтобы сделать.