簡體   English   中英

.MissingResourceException:找不到基本名稱的包

[英].MissingResourceException: Can't find bundle for base name

我正在使用名為jnca的庫來捕獲從路由器發送的netflow udp數據包。

當它被導入到IntellijIDea中的新項目時,它可以工作。

JNCA

在maven項目中使用它時,它不起作用並給出此異常。

jnca

例外:

java.util.MissingResourceException: Can't find bundle for base name org.wso2.event.adaptor.udp.jnca.etc.NetFlow, locale en_US
at java.util.ResourceBundle.throwMissingResourceException(ResourceBundle.java:1499)
at java.util.ResourceBundle.getBundleImpl(ResourceBundle.java:1322)
at java.util.ResourceBundle.getBundle(ResourceBundle.java:795)
at org.wso2.event.adaptor.udp.jnca.cai.utils.Resources.<init>(Resources.java:24)
at org.wso2.event.adaptor.udp.jnca.cai.flow.collector.Collector.<clinit>(Collector.java:51)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:190)
at org.wso2.event.adaptor.udp.jnca.cai.flow.collector.Run.<clinit>(Run.java:14)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:190)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:113)
NetFlow.properties: Can't find bundle for base name org.wso2.event.adaptor.udp.jnca.etc.NetFlow, locale en_US

沒有包命名問題。

問題在於此代碼段

      try {

        resources = ResourceBundle.getBundle("org.wso2.event.adaptor.udp.jnca.etc." + myName, Locale
                                             .getDefault());
    } catch (MissingResourceException exc) {
        exc.printStackTrace();
        error(SuperString.exceptionMsg(exc.toString()));
    }

myName = Netflow

我已經嘗試更改資源的路徑,但它不起作用。 並嘗試將該netflow.properties文件包含在maven項目的資源文件夾中,它也無法正常工作

如何解決這個問題

謝謝

使用Maven時,屬性文件應位於src / main / resources中,而不是src / main / java中(參見此處

因此,例如,如果faces-config.xml中有以下定義(用於在facelet頁面中使用msgs變量):

    <resource-bundle>
        <base-name>i18n.PanneauPrincipal</base-name>
        <var>msgs</var>
    </resource-bundle>

或者,如果以編程方式加載資源文件:

    ResourceBundle bundle = ResourceBundle.getBundle("i18n.PanneauPrincipal", locale);

然后PanneauPrincipal_en.properties文件應位於以下目錄中:

    src/main/resources/i18n

將.properties文件復制到根目錄中的resources文件夾(不在包內)然后在您的代碼中,當您要訪問這些.properties文件時,不要提及任何包名稱。 只有.properties文件的名稱就足夠了。 像這樣:

 resources = ResourceBundle.getBundle(myName, Locale.getDefault());

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM