NetBeans Maven项目报MissingResourceException找不到资源包如何解决?
Maven项目ResourceBundle找不到资源包解决方案
- 第一步:确认资源文件是否被正确打包到classpath
Maven默认会将src/main/resources目录下的所有文件复制到编译输出的target/classes目录下,你可以先执行mvn clean compile命令,查看target/classes根目录下是否存在xxx.properties和xxx_en_US.properties文件。
如果文件不存在,检查你的pom.xml中是否有自定义的<resources>配置覆盖了默认规则,如果有需要添加如下配置确保资源目录被正确识别:<build> <resources> <resource> <directory>src/main/resources</directory> <includes> <include>**/*.properties</include> </includes> </resource> </resources> </build> - 第二步:确认资源包baseName写法正确
如果你的properties文件直接放在src/main/resources根目录,getBundle的参数写"xxx"是正确的。如果文件放在src/main/resources下的子目录,比如src/main/resources/com/example/config/xxx.properties,则参数需要写为全路径格式"com.example.config.xxx"。 - 第三步:检查文件名规则是否符合要求
确认文件名拼写完全匹配,大小写、特殊符号无错误,后缀为.properties(注意不要出现系统隐藏后缀导致文件名实际为xxx.properties.txt的情况),locale标识格式正确为xxx_语言代码_国家代码.properties,xxx_en_US.properties本身的格式是符合要求的。 - 第四步:指定类加载器读取资源
部分场景下默认的ResourceBundle类加载器无法读取到当前项目的资源,可以修改读取代码指定当前类的类加载器:
把java.util.ResourceBundle bundle = java.util.ResourceBundle.getBundle("xxx", java.util.Locale.US, YourCurrentClass.class.getClassLoader());YourCurrentClass替换为你当前写这段代码的类名即可。 - 第五步:排查类加载路径
可以在读取资源前添加代码打印当前类加载器的根路径,确认资源文件是否在该路径下:System.out.println(YourCurrentClass.class.getClassLoader().getResource("").getPath());
内容的提问来源于stack exchange,提问作者F___ThisToxicCommunityHere
相关产品推荐
相关产品推荐

