【问题标题】:.MissingResourceException: Can't find bundle for base name.MissingResourceException:找不到基本名称的捆绑包
【发布时间】:2014-03-21 03:40:32
【问题描述】:

我正在使用名为 jnca 的库来捕获从路由器发送的 netflow udp 数据包。

当它被导入 IntellijIDea 中的新项目时,它可以工作。

当它在 maven 项目中使用时,它不起作用并给出了这个异常。

例外:

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()));
    }

我的名字 = Netflow

我已尝试更改资源的路径,但没有成功。 并尝试将 netflow.properties 文件包含在 maven 项目的资源文件夹中,它也不起作用

如何解决这个问题

谢谢

【问题讨论】:

标签: java maven resourcebundle


【解决方案1】:

使用 Maven 时,属性文件应位于 src/main/resources 中,而不是位于 src/main/java 中(参见 here

因此,例如,如果您在 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

【讨论】:

  • 感谢您回答这个问题。将我的包移动到我的 src/main/resources 解决了我遇到的同样问题。这应该是问题的公认答案。
【解决方案2】:

将您的 .properties 文件复制到根目录下的资源文件夹(不在包内) 然后在您的代码中,当您想要访问这些 .properties 文件时,不要提及任何包名称。只是 .properties 文件的名称就足够了。 像这样:

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

【讨论】:

  • 大声笑我已经这样做了很多次,我快疯了,因为这次它不起作用。我无意中在“java”文件夹中创建了“resources”文件夹。点赞
猜你喜欢
  • 2016-06-13
  • 2016-05-02
  • 1970-01-01
  • 1970-01-01
  • 2011-01-06
  • 1970-01-01
  • 2021-10-31
  • 1970-01-01
相关资源
最近更新 更多