簡體   English   中英

使用 Maven 陰影插件找不到 ResourceBundle

[英]ResourceBundle not found with Maven Shade plugin

我有一個 java 項目,我想用 Shade 插件放入一個胖 jar 項目。 我在其中創建了一個資源包。 當我使用 IntelliJ“運行”運行項目時,一切正常,但是當我構建 fat-jar 並嘗試運行它時,它說java.util.MissingResourceException: Can't find bundle for base name lang.lang, locale de

捆綁包位於該文件夾中:

- src
  - main
    - resources
      - lang
        - lang_DE.properties
        - lang_EN.properties

加載包的代碼:

ResourceBundle.getBundle("lang.lang", propertyService.getLanguage()) (使用 intelliJ 運行時有效)

陰影插件:

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-shade-plugin</artifactId>
  <version>3.2.0</version>
  <executions>
    <execution>
      <phase>package</phase>
      <goals>
        <goal>shade</goal>
      </goals>
      <configuration>
        <shadedArtifactAttached>true</shadedArtifactAttached>
        <shadedClassifierName>project-classifier</shadedClassifierName>
        <outputFile>target\${project.artifactId}.jar</outputFile>
        <transformers>
          <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
          <mainClass>my.main.class</mainClass>
        </transformer>
        <transformer implementation="org.apache.maven.plugins.shade.resource.ResourceBundleAppendingTransformer">
          <basename>lang/lang</basename>
        </transformer>
      </transformers>
    </configuration>
   </execution>
 </executions>
</plugin>

我還檢查了 JAR 和語言文件應該在哪里,所以它們應該是可見的。 我添加了第二個變壓器,但我不確定這是否必要。

我終於找到了:它是文件名中的大寫“DE”和“EN”,而較低的“de”和“en”傳遞給 getBundle。 將文件重命名為

lang_de.properties
lang_en.properties

解決了這個問題。

我仍然完全不知道為什么它從 IntelliJ 開始而不是在執行胖 JAR 時起作用。

僅供參考:不需要 ResourceBundleAppendingTransformer

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM