java - 捆绑的 JavaFX 应用程序使用非英语参数运行时抛出 "Could not start JVM"

标签 java javafx locale packager

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

> 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 上都失败了。这也不是环境问题,因为我已经在两台不同的机器(以及操作系统)上对其进行了测试。

如果有任何帮助,我将不胜感激。

最佳答案

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

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

另一种解决方法(最后的手段?)是将字符作为转义的 Unicode 传递。参见 Convert escaped Unicode character back to actual character .尽管不可否认,这是一件丑陋而乏味的事情。

关于java - 捆绑的 JavaFX 应用程序使用非英语参数运行时抛出 "Could not start JVM",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33733874/

相关文章:

java - 如何获取XSSFSimpleShape对象的背景颜色?

java - 使用更多信息扩展 log4j 错误电子邮件

java - 如何让EntityManager在DAO Factory中正常工作?

java - AcceptHeaderLocaleResolver 错误

java - OAuth:尝试获取 LinkedIn 访问 token 时的 HTTP 401 状态

JavaFX : StackPane Sequential Transition

java - Java 和 JavaFX 版本必须匹配吗?

java - 在 JavaFX 的 WebView 中使用 JavaScript 设置任意 CSS 规则

java - 为什么Java double 印格式根据是否使用String.format而不同

bash - 如何更改 Git 命令行界面的语言?