2014-01-06 4 views
0

Я новичок в struts2, и у меня возникли проблемы с загрузкой файла пользовательского перехватчика в мое демо-приложение Struts2. Я проверил и проверил все мои java, jsp и xml-файлы, и все выглядит нормально. Во время выполнения у меня есть следующая ошибка, и я не уверен, как ее исправить. Приложение работает, но перехватчик не вызывается, а операторы печати не печатаются.Struts 2 не удалось загрузить файл перехватчика

WARNING: Unable to load config class com.ao.businessobjects.interceptor at interceptor -  file:/Users/faraichirawu/Documents/workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/AO/WEB-INF/classes/struts.xml:16:86 probably due to a missing jar, which might be fine if you never plan to use the LoginInterceptor interceptor 
Jan 05, 2014 4:27:20 PM com.opensymphony.xwork2.config.providers.InterceptorBuilder error 
SEVERE: Actual exception 
Caught Exception while registering Interceptor class com.ao.businessobjects.interceptor - interceptor - file:/Users/faraichirawu/Documents/workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/AO/WEB-INF/classes/struts.xml:16:86 
at com.opensymphony.xwork2.factory.DefaultInterceptorFactory.buildInterceptor(DefaultInterceptorFactory.java:64) 
at com.opensymphony.xwork2.ObjectFactory.buildInterceptor(ObjectFactory.java:202) 
at com.opensymphony.xwork2.config.providers.InterceptorBuilder.constructInterceptorReference(InterceptorBuilder.java:70) 
at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.lookupInterceptorReference(XmlConfigurationProvider.java:1110) 
at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.buildInterceptorList(XmlConfigurationProvider.java:626) 
at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.addAction(XmlConfigurationProvider.java:440) 
at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.addPackage(XmlConfigurationProvider.java:552) 
at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.loadPackages(XmlConfigurationProvider.java:292) 
at org.apache.struts2.config.StrutsXmlConfigurationProvider.loadPackages(StrutsXmlConfigurationProvider.java:112) 
at com.opensymphony.xwork2.config.impl.DefaultConfiguration.reloadContainer(DefaultConfiguration.java:258) 
at com.opensymphony.xwork2.config.ConfigurationManager.getConfiguration(ConfigurationManager.java:67) 
at org.apache.struts2.dispatcher.Dispatcher.init_PreloadConfiguration(Dispatcher.java:445) 
at org.apache.struts2.dispatcher.Dispatcher.init(Dispatcher.java:489) 
at org.apache.struts2.dispatcher.ng.InitOperations.initDispatcher(InitOperations.java:74) 
at org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.init(StrutsPrepareAndExecuteFilter.java:57) 
at org.apache.catalina.core.ApplicationFilterConfig.initFilter(ApplicationFilterConfig.java:281) 
at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:262) 
at org.apache.catalina.core.ApplicationFilterConfig.<init>(ApplicationFilterConfig.java:107) 
at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:4775) 
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5452) 
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) 
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1559) 
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1549) 
at java.util.concurrent.FutureTask.run(FutureTask.java:262) 
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) 
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) 
at java.lang.Thread.run(Thread.java:744) 
Caused by: java.lang.ClassNotFoundException: com.ao.businessobjects.interceptor 
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1702) 
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1547) 
at com.opensymphony.xwork2.util.ClassLoaderUtil.loadClass(ClassLoaderUtil.java:152) 
at com.opensymphony.xwork2.ObjectFactory.getClassInstance(ObjectFactory.java:128) 
at com.opensymphony.xwork2.ObjectFactory.buildBean(ObjectFactory.java:181) 
at com.opensymphony.xwork2.ObjectFactory.buildBean(ObjectFactory.java:171) 
at com.opensymphony.xwork2.factory.DefaultInterceptorFactory.buildInterceptor(DefaultInterceptorFactory.java:42) 
... 26 more 

это мой struts.xml файл

<?xml version="1.0" encoding="UTF-8" ?> 
<!DOCTYPE struts PUBLIC 
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN" 
"http://struts.apache.org/dtds/struts-2.3.dtd"> 
<struts> 

<!-- <constant name="struts.convention.result.path" value="/WEB-INF/" /> 
    <constant name="struts.convention.action.suffix" value="Controller" /> <constant 
    name="struts.convention.package.locators" value="default" /> <constant name="struts.convention.default.parent.package" 
    value="default" /> <constant name="struts.enable.DynamicMethodInvocation" 
    value="false" /> --> 

<package name="default" extends="struts-default" namespace="/admin/accounts"> 
     <interceptors> 
     <interceptor name="LoginInterceptor" class="com.ao.businessobjects.interceptor" /> 
     <interceptor-stack name="loginStack"> 
      <interceptor-ref name="LoginInterceptor" /> 
      <interceptor-ref name="defaultStack" /> 
     </interceptor-stack> 
    </interceptors> 

    <global-results> 
     <result name="login">/WEB-INF/login.jsp</result> 
    </global-results> 

    <action name="login"> 
     <result>/WEB-INF/login.jsp</result> 
    </action> 

    <action name="loginAction" class="com.ao.admin.administrator.accounts.LoginAction"> 
     <result name="success" type="chain">welcomeAction</result> 
     <result name="input">/WEB-INF/login.jsp</result> 
    </action> 

    <action name="welcomeAction"> 
     <interceptor-ref name="loginStack" /> 
     <result name="success">/WEB-INF/welcome.jsp</result> 
    </action> 

    <action name="logoutAction" class="com.ao.admin.administrator.accounts.LogoutAction"> 
     <result name="success">/WEB-INF/login.jsp</result> 
    </action> 
</package> 
</struts> 

Сосуд Lib файлы загружены в

Обще-FileUpload-1.3.jar
Обще-ю-2.2.jar
фонда -lang-2.4.jar
commons-lang3-3.1.jar
commons-logging-1.1.3.jar
общий S-каротаж апи-1.1.jar
FreeMarker-2.3.19.jar
Javassist-3.11.0.GA.jar
OGNL-3.0.6.jar
struts2-конфигурация-браузер плагин-2.3. 16.jar
struts2-ядро-2.3.16.jar
xwork-ядро-2.3.16.jar

это пользовательский класс Interceptor

package com.ao.businessobjects.interceptor; 


import com.opensymphony.xwork2.ActionInvocation; 
import com.opensymphony.xwork2.interceptor.Interceptor; 

public class LoginInterceptor implements Interceptor 
{ 

private static final long serialVersionUID = 1L; 

public String intercept(ActionInvocation invocation) throws Exception { 

    String className = invocation.getAction().getClass().getName(); 
    long startTime = System.currentTimeMillis(); 
    System.out.println("Before calling action: " + className); 

    String result = invocation.invoke(); 

    long endTime = System.currentTimeMillis(); 
    System.out.println("After calling action: " + className 
      + " Time taken: " + (endTime - startTime) + " ms"); 

    return result; 
} 

public void destroy() { 
    System.out.println("Destroying MyLoggingInterceptor..."); 
} 
public void init() { 
    System.out.println("Initializing MyLoggingInterceptor..."); 
} 
} 
+0

Опубликовать код класса перехватчика включает в себя инструкцию 'package'. –

+0

Класс 'com.ao.businessobjects.interceptor' (который неправильно указан на основе соглашений об именах Java) не развертывается, как говорится в сообщении об ошибке. –

ответ

0

атрибут класса является неполным

В вашем struts.xml заменить

<interceptor name="LoginInterceptor" class="com.ao.businessobjects.interceptor" /> 

с

<interceptor name="LoginInterceptor" class="com.ao.businessobjects.interceptor.LoginInterceptor" /> 

«класс» это полный путь вашего перехватчик, «имя» это логическое имя, которое будет использоваться в стойках .xml

Смежные вопросы