【问题标题】:java : properties file escape sequence for square bracketjava:方括号的属性文件转义序列
【发布时间】:2014-06-10 20:32:21
【问题描述】:

需要在值的开头转义 [。

我正在使用 PropertyResourceBundle 读取属性文件,并且我有一个属性,其值以方括号开头,例如

myapp.add.user.email.selfRegistration.subject=[MYAPP] Welcome to MYAPP

当我尝试读取此文件时,出现以下异常

java.lang.ClassCastException: [Ljava.lang.String; cannot be cast to
java.lang.String    at
java.util.ResourceBundle.getString(ResourceBundle.java:355)

我正在使用 jdk7

【问题讨论】:

    标签: java resourcebundle properties-file


    【解决方案1】:

    java.util.PropertyResourceBundle 基于java.util.Properties。从技术上讲,java.util.Properties 实现了Map<Object,Object>,但是当您从文件加载属性时,键和值仅限于String(检查java.util.Properties.load() 方法的来源)。并且'['字符在属性文件格式中没有特殊含义。

    因此,如果您的所有资源包确实基于属性文件,则由于尝试将String[] 转换为String,因此不可能获得ClassCastException

    您很可能有一个基于ListResourceBundle 的包(或ResourceBundle 的自定义子类),它可以包含任何类型的值,包括数组。

    并且可以混合使用具有相同基本名称的基于属性和基于类的资源包,例如,默认资源包可以是属性文件,而特定于语言环境的子包是基于ListResourceBundle

    【讨论】:

    • 是的 ListResourceBundle 工作;但现在我扩展了PropertyResourceBundle 来处理我的情况。
    【解决方案2】:

    我对下面的程序进行了同样的尝试,我可以毫无例外地从我的程序中获取输出

    你能检查一下,如果有任何其他问题,请告诉我

    package com.kb;
    
    import java.util.Enumeration;
    import java.util.ResourceBundle;
    
    public class ResourceBundleTest {
        public static void main(String[] args) {
    
            ResourceBundle rb = ResourceBundle.getBundle("mybundle");
            Enumeration <String> keys = rb.getKeys();
            while (keys.hasMoreElements()) {
                String key = keys.nextElement();
                String value = rb.getString(key);
                System.out.println(key + ": " + value);
            }
        }
    
    }
    

    【讨论】:

    • "String value = rb.getString(key);" 仍然抛出相同的异常
    • 我使用的是 java 版本 7
    • 我刚才在Java 7中运行了上面的代码......它工作得很好......请检查你的代码是否正在读取任何asString数组并放入String,因为这种异常只发生在String[] 赋值给 String。否则发布您的整个代码将对其进行查看..
    猜你喜欢
    • 2011-06-27
    • 1970-01-01
    • 1970-01-01
    • 2012-10-10
    • 2018-11-16
    • 2022-12-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多