我有一个基本框架(称为' a '),其中包含用于本地化支持的resourceBundles。在一个新项目中,我使用a作为maven依赖项,以便访问它的功能。
然而,似乎当我试图在我的新项目中加载resourceBundle时,它无法在依赖项中找到它并抛出Caused by: java.util.MissingResourceException: Can't find bundle for base name
。
是否有可能从外部依赖项加载这样的resourceBundles,或者我应该将它从A移动到我的新项目并保持它在那里?我们想把它放在A的原因是我们想在多个项目中使用A,这样维护bundle会容易得多。
编辑:这是我如何存储和加载包:
工件A在这里有一个包:
src/main/java/localizationManagement/BundleENStrings.java
工件A还包含以下测试基类(所有测试类在新项目中扩展这个类):
src/main/java/testManagement/UtilityTestClass.java
默认语言环境在这里初始化如下:
resourceBundle = ResourceBundle.getBundle("src/main/java/localizationManagement/BundleENStrings.java")
当我在工件A的代码上工作时,这工作得很好,但是当我试图在新项目中运行测试时,扩展上面提到的UtilityTestClass
,它将无法找到BundleENStrings.java
即使我尝试在扩展UtilityTestClass的类中手动加载资源束,我也会得到相同的错误。我还尝试使用以下路径方法:
jetbrains://idea/navigate/reference?project=project-name&fqn=localizationManagement.BundleENStrings
我假设我应该以某种方式修改fqn参数值以指向依赖jar。
/*Try to work with class*/
package com.example.languages;
import java.util.ListResourceBundle;
public class ResourceBundle extends ListResourceBundle {
@Override
protected Object[][] getContents() {
return new Object[][]{
{"lang.en", "English"},
{"lnag.de", "German"},
{"lang.es", "Spanish"},
{"lang.fr", "French"},
{"lang.pt", "Portuguese"},
{"lang.ru", "Russian"},
{"lang.it", "italian"},
{"lang.jp", "japanese"},
{"lang.cn", "Chinese"}
};
}
}
// in another class
package com.exemplo;
import java.util.ResourceBundle;
public class ExemploResourceBundleWithClass {
/* package by are the classes*/
static final String pack= "com.exemplo.languages";
static final String baseName = "ResourceBundle";
static final String path = pack+"."+baseName;
public static void main(String[] args) {
ResourceBundle message = ResourceBundle.getBundle(path);
//or
ResourceBundle message = ResourceBundle.getBundle("com.exemplo.languages.ResourceBundle");
}
}