Я новичок в 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...");
}
}
Опубликовать код класса перехватчика включает в себя инструкцию 'package'. –
Класс 'com.ao.businessobjects.interceptor' (который неправильно указан на основе соглашений об именах Java) не развертывается, как говорится в сообщении об ошибке. –