问题描述
我有一个 Java 项目,我想将它放入一个带有 Shade 插件的胖 jar 中。我在其中创建了一个资源包。当我使用 IntelliJ“运行”运行项目时,一切正常,但是当我构建 fat-jar 并尝试运行它时
<div class="form-check form-switch">
<input class="form-check-input" type="checkBox" id="flexSwitchCheckDefault">
<label class="form-check-label" for="flexSwitchCheckDefault">Original switch unchecked</label>
</div>
<div class="form-check form-switch">
<input class="form-check-input" type="checkBox" id="flexSwitchCheckChecked" checked>
<label class="form-check-label" for="flexSwitchCheckChecked">Original switch checked</label>
</div>
<div class="form-check form-switch form-switch-md">
<input class="form-check-input" type="checkBox" id="flexSwitchCheckDefault">
<label class="form-check-label" for="flexSwitchCheckDefault">Medium switch unchecked</label>
</div>
<div class="form-check form-switch form-switch-md">
<input class="form-check-input" type="checkBox" id="flexSwitchCheckChecked" checked>
<label class="form-check-label" for="flexSwitchCheckChecked">Medium switch checked</label>
</div>
<div class="form-check form-switch form-switch-lg">
<input class="form-check-input" type="checkBox" id="flexSwitchCheckDefault">
<label class="form-check-label" for="flexSwitchCheckDefault">Large switch unchecked</label>
</div>
<div class="form-check form-switch form-switch-lg">
<input class="form-check-input" type="checkBox" id="flexSwitchCheckChecked" checked>
<label class="form-check-label" for="flexSwitchCheckChecked">Large switch checked</label>
</div>
捆绑包在该文件夹中:
java.util.MissingResourceException: Can't find bundle for base name lang.lang,locale de
加载包的代码:
- src
- main
- resources
- lang
- lang_DE.properties
- lang_EN.properties
(与 intelliJ 一起运行时有效)
阴影插件:
ResourceBundle.getBundle("lang.lang",propertyService.getLanguage())
我还检查了 JAR,语言文件在它们应该在的地方,所以它们应该是可见的。 我添加了第二个变压器,但我不确定这是否有必要。
解决方法
我终于找到了:它是文件名中的大写“DE”和“EN”,而较低的“de”和“en”则传递给了 getBundle。 将文件重命名为
lang_de.properties
lang_en.properties
解决了问题。
我仍然完全不知道为什么它在从 IntelliJ 开始而不是在执行胖 JAR 时有效。
仅供参考:不需要 ResourceBundleAppendingTransformer