【问题标题】:MissingResourceException: Can't find bundle for base nameMissingResourceException:找不到基本名称的捆绑包
【发布时间】:2016-05-02 05:06:31
【问题描述】:

我知道在 stackoverflow 和其他论坛上有很多关于这个错误的问题和答案。但是我还是找不到解决办法……

我的代码:

package com.sodifrance.apex.presentation.generic.utils;

import java.util.ResourceBundle;

public class EnumTranslator {

    private static EnumTranslator instance = null;

    private EnumTranslator() {
    }

    public static EnumTranslator getDefaut() {
        if (instance == null)
        {
            instance = new EnumTranslator();
        }
        return instance;
    }

    public String translate(Enum<?> enumerationValue) {
        String localizedMessage = "";

        if (enumerationValue != null)
        {
            ResourceBundle b = ResourceBundle.getBundle("resources.enumerations");

            localizedMessage = enumerationValue.name();

            if (b != null)
            {
                localizedMessage = b.getString(enumerationValue.getDeclaringClass().getName() + "." + enumerationValue.name());
            }
        }

        return localizedMessage;
    }
}

Tomcat 控制台:

java.util.MissingResourceException:找不到基本名称的捆绑包 resources.enumerations,语言环境 fr_FR 在 java.util.ResourceBundle.throwMissingResourceException(ResourceBundle.java:1564) 在 java.util.ResourceBundle.getBundleImpl(ResourceBundle.java:1387) 在 java.util.ResourceBundle.getBundle(ResourceBundle.java:773) 在 com.presentation.generic.utils.EnumTranslator.translate(EnumTranslator.java:25) 在 com.presentation.entry.societe.EntryChoixTypeSocieteAction.execute(EntryChoixTypeSocieteAction.java:53) 在 com.presentation.generic.back.BackRequestProcessor.processActionPerform(BackRequestProcessor.java:118) 在 org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:228) 在 com.presentation.generic.back.BackRequestProcessor.process(BackRequestProcessor.java:63) 在 org.apache.struts.action.ActionServlet.process(ActionServlet.java:1913) 在 org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:449) 在 javax.servlet.http.HttpServlet.service(HttpServlet.java:622) 在 javax.servlet.http.HttpServlet.service(HttpServlet.java:729) 在 org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:291) 在 org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) 在 org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) 在 org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239) 在 org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) 在 com.presentation.generic.security.EncodingFilter.doFilter(EncodingFilter.java:121) 在 org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239) 在 org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) 在 com.presentation.generic.security.ApplicationFilter.doFilter(ApplicationFilter.java:72) 在 org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239) 在 org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) 在 org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:212) 在 org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106) 在 org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502) 在 org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:141) 在 org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79) 在 org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:616) 在 org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88) 在 org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:521) 在 org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1096) 在 org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:674) 在 org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1500) 在 org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1456) 在 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 在 org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) 在 java.lang.Thread.run(Thread.java:745)

当我在调试模式下检查这一行时:

ResourceBundle b = ResourceBundle.getBundle("resources.enumerations");

我有这条消息:

方法 getBundle(String) 未为 Enum Translator 类型定义

我的文件配置:

【问题讨论】:

  • 你把你的属性文件放在哪里?
  • @JérémieB 我已经用属性文件更新了我的帖子
  • 试试getBundle("com.sod.ap.properties.enumerations")
  • @JérémieB 这对我有好处,请发布您的答案。谢谢 ;)

标签: java


【解决方案1】:

Resource.getBundle 将 FQCN 作为参数。在语句ResourceBundle.getBundle("resources.enumerations") 中,JRE 正在寻找文件资源/枚举<_local>.properties

在你的例子中,你应该使用getBundle("com.sod.ap.properties.enumerations")

【讨论】:

    猜你喜欢
    • 2016-06-13
    • 2014-03-21
    • 1970-01-01
    • 1970-01-01
    • 2011-01-06
    • 1970-01-01
    • 2021-10-31
    • 1970-01-01
    相关资源
    最近更新 更多