MissingResourceException:无法找到基本名称

时间:2016-01-25 18:59:40

标签: java

我知道在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,locale fr_FR at   java.util.ResourceBundle.throwMissingResourceException(ResourceBundle.java:1564)     在java.util.ResourceBundle.getBundleImpl(ResourceBundle.java:1387)     在java.util.ResourceBundle.getBundle(ResourceBundle.java:773)at   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)at   javax.servlet.http.HttpServlet.service(HttpServlet.java:729)at at   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)

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

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

我有这样的信息:

  

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

我的文件配置: enter image description here

1 个答案:

答案 0 :(得分:1)

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

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