【发布时间】:2016-06-13 10:34:40
【问题描述】:
运行我从 maven 项目创建的 jar 文件时:
java -jar basictool.jar
我得到这个错误异常:
Exception in thread "main" java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader.main(JarRsrcLoader.java:58)
Caused by: java.util.MissingResourceException: Can't find bundle for base name com/kit/version, locale en_US
at java.util.ResourceBundle.throwMissingResourceException(UnknownSource)
at java.util.ResourceBundle.getBundleImpl(Unknown Source)
at java.util.ResourceBundle.getBundle(Unknown Source)
at com.factories.FactoryImpl.<init>(FactoryImpl.java:80)
at com.parsers.BasicParser.<init>(BasicParser.java:32)
at com.parsers.FileParser.<init>(FileParser.java:76)
at com.tools.BasicTool.main(BasicTool.java:75)
... 5 more
我使用 maven jar 创建向导创建了 jar 文件: 右键单击项目,选择 Export > Java > Runnable JAR file 和选项
启动配置:BasicTool - 工作
导出目的地:C:\Users\Victor\Documents\basictool.jar
库处理:将所需库打包到生成的 JAR 中
version.properties 文件保存在src/main/resources 中,如com/kit/version.properties。
我已通过运行检查是否在 jar 文件中找到了 version.properties 文件:
jar tf basictool.jar > output.txt
我在哪里可以找到 version.properties 文件:
resources/com/kit/version.properties
我尝试像这样加载资源:
ResourceBundle.getBundle("com/kit/version");
我的机器和环境规格如下: Windows 7,春季版:3.7.2。
注意:
我发现了许多与我的问题相似的问题,但我找到的答案指向属性文件被正确命名或放置在正确的位置。从这些答案中我了解到 version.properties 很好,因为默认情况下ResourceBundle.getBundle("com/kit/version") 将首先查找 version.class 然后是 version.properties。它还将在最终查找基本名称 version.properties 之前查找 version_en_US.properties。
我似乎与上述一致,因为文件 version.properties 位于正确的位置并正确命名。我似乎也与其他答案提供的一致:(
我还想指出,当我从 spring 运行程序时,它发现资源很好,这让我怀疑 jar 的创建过程是问题的原因。
另外需要注意的是属性文件在另一个maven项目中。
我希望我提供了足够/清晰的细节。任何帮助将不胜感激,在此先感谢您!
【问题讨论】:
标签: spring maven jar resourcebundle properties-file