捆绑的JavaFX应用程序使用非英语参数运行;无法启动JVM“;

捆绑的JavaFX应用程序使用非英语参数运行;无法启动JVM“;,java,javafx,locale,packager,Java,Javafx,Locale,Packager,我在运行简单的JavaFX应用程序时遇到问题。我正在使用本机packager构建exe。我想从windows文件上下文菜单运行我的应用程序,但当我尝试使用参数运行应用程序时: > JavaFXApplication1.exe ąęć 我得到了两个错误: 1) ,单击“确定”后: (二) 当我以jar文件运行应用程序时: > java -jar JavaFXApplication1.jar ąęć 应用程序启动成功,运行良好 另外,当我使用此命令运行应用程序时: > Java

我在运行简单的JavaFX应用程序时遇到问题。我正在使用本机packager构建exe。我想从windows文件上下文菜单运行我的应用程序,但当我尝试使用参数运行应用程序时:

> JavaFXApplication1.exe ąęć
我得到了两个错误:

1) ,单击“确定”后:

(二)

当我以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);
    }
}
忽略,该应用程序不会关闭

我认为这与这里描述的问题完全相同:

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


我将感谢任何帮助

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

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


另一种解决方法(最后一种方法?)是将字符作为转义Unicode进行传递。看见尽管无可否认,这是一件既丑陋又乏味的事情。

很难找到JDK 8u40b05。。我尝试了JDK的最新测试版,但问题仍然存在。。。您对解决方法的想法很好,但我如何从上下文菜单中实现这一点?我无法直接将非英语字符传递给JavaFX应用程序,以将其转换为转义Unicode,因为应用程序不会使用此参数运行。second选项“将命令存储到文件”很难通过单个命令实现。Windows中的文件上下文菜单只能运行一个命令,我必须在Windows Requistry中添加该命令。所以,如何在一个命令传递参数的文件,保存它,并运行应用程序与此文件作为参数。。。我可以在哪里保存这个文件,因为当我从实际文件夹运行应用程序时,实际路径可能包含非英语字符。您是否尝试过设置JVM区域设置?对它也在失败。