代码之家  ›  专栏  ›  技术社区  ›  Alireza Fattahi

通过System.setProperty更改java.local.providers无效

  •  -1
  • Alireza Fattahi  · 技术社区  · 1 年前

    要更改java 9+中的区域设置提供程序(我现在使用21),我可以用 -Djava.locale.providers=COMPAT,SPI

    我是如何尝试通过编程方式设置此属性的 System.setProperty("java.locale.providers", "COMPAT,SPI");

    但这不会产生效果。

    该项目是一个基于web的应用程序,我在中添加了以上代码 ServletContextListener#contextInitialized 方法

    @WebListener
    public class StartUp implements ServletContextListener {
    
    @Override
    public void contextInitialized(ServletContextEvent event) {
        System.setProperty("java.locale.providers", "COMPAT,SPI"); 
     }
    
    1 回复  |  直到 1 年前
        1
  •  3
  •   Abra BlueJK    1 年前

    请参阅 documentation 用于类 LocaleServiceProvider :

    可以使用配置区域设置敏感服务的搜索顺序 java.locale.providers 系统属性。此系统属性声明用户查找由逗号分隔的区域设置敏感服务的首选顺序。由于此属性值仅在初始化此类时读取和缓存,因此用户应在java启动器命令行上指定该属性。在运行时使用设置 System.setProperty(String, String) 不鼓励,可能不会影响订单。

    我相信你 servlet container 应提供配置此类[系统]属性的能力。由于我没有找到有关您正在使用哪个servlet容器的任何详细信息,因此我无法进一步帮助您。我建议您参考servlet容器的文档。

    推荐文章