我有一个供应商小程序正在尝试使用不再受支持的区域设置。
反编译代码如下
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 是有效的系统属性。
在我看来,我有两个选择。
与供应商合作,希望他们能够进行纠正,而无需告诉我们花钱升级。
重新编译代码并进行更正,并使用我自己的证书重新签署 jar。并且可能违反许可/支持协议(protocol)。
或者是他们的第三种选择?我还没有看到任何方法可以在 java 中设置系统属性而不在代码本身中这样做。有办法吗?如果需要将文件推送给客户端计算机,我可以完全访问它们。我只是不知道如何在不使用 cmd 行参数或在代码中这样做的情况下添加或更改默认的 java 系统属性。
最佳答案
鉴于小程序是如何通过 Java 插件启动的,并且您可以访问客户端计算机,您可能需要尝试在 Java 插件控制面板中将 user.region
设置为运行时参数。查看详情here
关于供应商 Applet 中的 Java 区域设置问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1343537/