Netbeans Maven 项目中 ResourceBundle 的 Bundle 类路径无效

问题描述

我刚刚将我的项目移植到 Maven,我在让我的代码现在识别 ResourceBundle 应该加载的包的存在时遇到问题,这之前工作正常

这是我目前的项目结构:

├───main
│   └───java
│       └───pcd
│           ├───data
│           ├───gui
│           │   ├───base
│           │   ├───bundle
│           │   │   └ Bundle.properties
│           │   ├───dialog
│           │   └ MainFrame.java
│           ├───python
│           └───utils
└───test
    └───java

以前,我曾经可以在 MainFrame.java 中使用这行代码来导入包:

ResourceBundle bundle = ResourceBundle.getBundle("pcd.gui.bundle.Bundle",Locale.getDefault());

但这不再有效。我试着把 src.main.java. 放在它前面,有和没有 src,但它根本找不到 Bundle。

MainFrame.java 是 pcd.gui 包的一部分只是为了澄清,工作路径设置为 main 上方的两个文件夹,因此 main 位于:Project/src/main 工作路径所在的位置Project

我不确定我可以提供哪些其他信息,因为我是使用 Maven 及其结构的新手。这个项目在迁移到 Maven 之前是一个 ANT 项目。我正在 NetBeans 中处理它。

解决方法

这不起作用的原因是因为 Maven 在运行软件时不会在构建路径中原生包含资源文件(如以“.properties”结尾的文件)。

最有效地解决此问题的方法是简单地创建一个新文件夹:src/main/resources' where you will place your .properties` 文件。

然后,在您的 .POM 文件中,包含以下内容:

<build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-resources-plugin</artifactId>
                <version>2.7</version>
                <configuration>
                    <encoding>${project.encoding}</encoding>
                </configuration>
            </plugin>
        </plugins>
    </build>

这是一个插件,它告诉 Maven 识别您刚刚创建的新资源文件夹中的资源文件。

最后,将代码中文件的路径替换为如下所示: ResourceBundle bundle = ResourceBundle.getBundle("Bundle",Locale.getDefault());

此外,请注意检查您的代码中是否没有初始化其他包,因为如果您曾尝试通过 Swing GUI 自动执行国际化,NetBeans 有时会将其包含在不可编辑的代码中,就像我的情况一样。