供应商 Applet 中的 Java 区域设置问题

标签 java applet locale

我有一个供应商小程序正在尝试使用不再受支持的区域设置。

反编译代码如下

 String s1 = System.getProperty("java.version");
 String s2 = System.getProperty("user.language");
 String s;
    if(s1.regionMatches(true, 0, "1.4", 0, 3))
        s = System.getProperty("user.country");
    else
        s = System.getProperty("user.region");
    m_Locale = new Locale(s2, s);

问题是客户端计算机上的其他应用程序需要 JRE 1.5 及更高版本。

因此 if(s1.regionMatches(true, 0, "1.4", 0, 3)) 行总是会进入 else

 s = System.getProperty("user.region"); always returns null in JRE 1.4 or higher. 

所以 新的语言环境(s2, s);

正在使用空参数调用并抛出空指针。

我知道这段代码很久以前就被放入了,以支持较旧的 JRE,即 1.1 和 1.3,其中 user.region 是有效的系统属性。

在我看来,我有两个选择。

  1. 与供应商合作,希望他们能够进行纠正,而无需告诉我们花钱升级。

  2. 重新编译代码并进行更正,并使用我自己的证书重新签署 jar。并且可能违反许可/支持协议(protocol)。

或者是他们的第三种选择?我还没有看到任何方法可以在 java 中设置系统属性而不在代码本身中这样做。有办法吗?如果需要将文件推送给客户端计算机,我可以完全访问它们。我只是不知道如何在不使用 cmd 行参数或在代码中这样做的情况下添加或更改默认的 java 系统属性。

最佳答案

鉴于小程序是如何通过 Java 插件启动的,并且您可以访问客户端计算机,您可能需要尝试在 Java 插件控制面板中将 user.region 设置为运行时参数。查看详情here

关于供应商 Applet 中的 Java 区域设置问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1343537/

相关文章:

PHP:依赖于语言环境的 float 到字符串转换

java - 如何在Android Studio中连接在线数据库

java - Odata 与 Olingo 或 Odata4j

java - 显示标签格式标签货币

java.lang.ClassFormat错误: Incompatible magic value 218774561

java - 如何使用 64 位浏览器和 64 位 java 插件在 64 位 Linux 上获取 32 位 JRE 路径

java - 在 Java Spring 中使用资源包中的区域设置

java - 是否有与 Java 中的 Scanner 类等效的单声道(.Net)

java - 删除覆盖方法中的抛出,编译器在调用时需要一个 try/catch block

java - System.getProperty ("user.language")始终返回 "en",而不是用户当前的语言设置