1

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

反编译代码如下

 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. 

所以 new Locale(s2, s);

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

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

我看到它的方式有两个选择。

  1. 与供应商联系,希望他们在不告诉我们花钱升级的情况下进行更正。

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

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

4

1 回答 1

1

看到小程序如何通过 Java 插件启动并且您可以访问客户端计算机,您可能想尝试user.region在 Java 插件控制面板中设置为运行时参数。在此处查看详细信息

于 2009-08-28T00:02:39.140 回答