问题描述
我刚刚将我的项目移植到 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 有时会将其包含在不可编辑的代码中,就像我的情况一样。