JAR中未包含Classpath messages_xx.properties文件

时间:2017-04-28 02:46:55

标签: java maven intellij-idea jar localization

我在使用IntelliJ中的Maven练习时遇到了一些问题,并且我的类路径中的资源文件不会被包含在构建的JAR中。

我的模块结构:

src/main/java/com/abc/Main.class                
src/main/java/com/abc/Messages.class            
src/main/java/com/abc/messages_en.properties    the not included resource files.
src/main/java/com/abc/messages_es.properties    
src/main/resources/                             misc resources

项目构建成功,但是当我运行JAR文件时,我会收到如下错误消息。当我解压缩JAR文件时,缺少messages_xx.properties文件。

Exception in thread "main" java.util.MissingResourceException: Can't find bundle for base name com.abc.messages, locale en
        at java.util.ResourceBundle.throwMissingResourceException(ResourceBundle.java:1564)
        at java.util.ResourceBundle.getBundleImpl(ResourceBundle.java:1387)
        at java.util.ResourceBundle.getBundle(ResourceBundle.java:845)
        at org.jis.Messages.<init>(Messages.java:42)
        at org.jis.Main.main(Main.java:205)

我的pom.xml:

<build>
  <plugins>
    <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-jar-plugin</artifactId>
      <version>2.6</version>
      <configuration>
        <includes>
          <include>${basedir}/src/main/java/com/abc/*.properties</include>
        </includes>
        <archive>
          <manifest>
            <mainClass>com.abc.Main</mainClass>
            <addClasspath>true</addClasspath>
          </manifest>
        </archive>
      </configuration>
    </plugin>
  </plugins>
</build>

在SO上遇到过许多类似的线程,但解决方案似乎不适合我的情况。有什么建议吗?我一直试图弄清楚为什么会发生这种情况一段时间但尚未找到答案。如果有人能给我一些提示,那就太好了。非常感谢。

1 个答案:

答案 0 :(得分:0)

Maven希望找到

src/main/java/com/abc/messages_en.properties
src/main/java/com/abc/messages_es.properties    

src/main/resources/com/abc/messages_en.properties
src/main/resources/com/abc/messages_es.properties    

src/main/java中的资源文件无法在生成的jar文件中完成,因为

  1. maven-compiler-plugin编译java源并将它们输出到target/classes

  2. 来自'src / main / resources into target / classes`的maven-resources-plugin副本(可能是过滤器)文件(包括其目录结构)

  3. 然后maven-jar-plugin根据target/classes

  4. 的内容构建jar

    因此,只需移动您的属性文件,然后停止与maven way服务进行摔跤。