从依赖中加载外部resourceBundle



我有一个基本框架(称为' 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");
}

}

最新更新