带有非英语参数的捆绑JavaFX应用程序抛出“无法启动JVM”

时间:2015-11-16 11:07:01

标签: java javafx locale packager

我在运行简单的JavaFX应用程序时遇到问题。我正在使用本机打包程序来构建exe。我想从Windows文件上下文菜单中运行我的应用程序,但是当我尝试使用params运行应用程序时:

> JavaFXApplication1.exe ąęć

我得到2个错误:

1)enter image description here,点击“确定”后:

2)enter image description here

当我以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

有人解决了这个问题吗?或者是否有人知道这个问题的解决方法?我尝试了从1.8.40到1.8.72的java版本,但是在每个JVM上都失败了。这也不是环境问题,因为我已经在2台不同的机器(以及操作系统)上进行了测试。

我将不胜感激任何帮助。

1 个答案:

答案 0 :(得分:0)

Jira问题在评论中提到它是从JDK版本8u40b06开始的回归。如果可能,一种解决方法是使用较旧的解决方法。试试8u40b05。

目前,您可以将所有命令参数存储在一个文件中(以ASCII字符命名)并将文件位置作为参数传递,以便读取应用程序的实际参数。

另一种解决方法(最后的手段?)是将字符作为转义Unicode传递。见Convert escaped Unicode character back to actual character。虽然承认这是一件丑陋乏味的事情。