Новичок: ошибка сборки при запуске Struts2 на JBoss из Eclipse

Я являюсь разработчиком .NET уже более 8 лет, меня поместили в проект Java, и я пытаюсь набрать скорость. Я использую Eclipse EE 3.5.1, JBoss 5.1 и Struts 2.1.8.1 (все последние версии, насколько мне известно).

Я пытаюсь создать новый проект с простым логином и домашней страницей. Но когда я запускаю свой проект из Eclipse, я получаю следующую ошибку сборки:

Exception starting filter struts2    
java.lang.ClassNotFoundException: org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter  
    at java.net.URLClassLoader$1.run(Unknown Source)  
    at java.security.AccessController.doPrivileged(Native Method)  
    at java.net.URLClassLoader.findClass(Unknown Source)  
    at java.lang.ClassLoader.loadClass(Unknown Source)  
    at java.lang.ClassLoader.loadClass(Unknown Source)  
    at org.jboss.web.tomcat.service.TomcatInjectionContainer.newInstance(TomcatInjectionContainer.java:262)  
    at org.jboss.web.tomcat.service.TomcatInjectionContainer.newInstance(TomcatInjectionContainer.java:256)  
    at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:220)  
    at org.apache.catalina.core.ApplicationFilterConfig.setFilterDef(ApplicationFilterConfig.java:332)  
    at org.apache.catalina.core.ApplicationFilterConfig.<init>(ApplicationFilterConfig.java:90)  
    at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:3783)  
    at org.apache.catalina.core.StandardContext.start(StandardContext.java:4413)  
    at org.jboss.web.tomcat.service.deployers.TomcatDeployment.performDeployInternal(TomcatDeployment.java:310)  
    at org.jboss.web.tomcat.service.deployers.TomcatDeployment.performDeploy(TomcatDeployment.java:142)  
    at org.jboss.web.deployers.AbstractWarDeployment.start(AbstractWarDeployment.java:461)  
    at org.jboss.web.deployers.WebModule.startModule(WebModule.java:118)  
    at org.jboss.web.deployers.WebModule.start(WebModule.java:97)  
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)  
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)  
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)  
    at java.lang.reflect.Method.invoke(Unknown Source)  
    at org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatcher.java:157)  
    at org.jboss.mx.server.Invocation.dispatch(Invocation.java:96)  
    at org.jboss.mx.server.Invocation.invoke(Invocation.java:88)  
    at org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:264)  
    at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:668)  
    at org.jboss.system.microcontainer.ServiceProxy.invoke(ServiceProxy.java:206)  
    at $Proxy38.start(Unknown Source)  
    at org.jboss.system.microcontainer.StartStopLifecycleAction.installAction(StartStopLifecycleAction.java:42)  
    at org.jboss.system.microcontainer.StartStopLifecycleAction.installAction(StartStopLifecycleAction.java:37)  
    at org.jboss.dependency.plugins.action.SimpleControllerContextAction.simpleInstallAction(SimpleControllerContextAction.java:62)  
    at org.jboss.dependency.plugins.action.AccessControllerContextAction.install(AccessControllerContextAction.java:71)  
    at org.jboss.dependency.plugins.AbstractControllerContextActions.install(AbstractControllerContextActions.java:51)  
    at org.jboss.dependency.plugins.AbstractControllerContext.install(AbstractControllerContext.java:348)  
    at org.jboss.system.microcontainer.ServiceControllerContext.install(ServiceControllerContext.java:286)  
    at org.jboss.dependency.plugins.AbstractController.install(AbstractController.java:1631)  
    at org.jboss.dependency.plugins.AbstractController.incrementState(AbstractController.java:934)  
    at org.jboss.dependency.plugins.AbstractController.resolveContexts(AbstractController.java:1082)  
    at org.jboss.dependency.plugins.AbstractController.resolveContexts(AbstractController.java:984)  
    at org.jboss.dependency.plugins.AbstractController.change(AbstractController.java:822)  
    at org.jboss.dependency.plugins.AbstractController.change(AbstractController.java:553)  
    at org.jboss.system.ServiceController.doChange(ServiceController.java:688)  
    at org.jboss.system.ServiceController.start(ServiceController.java:460)  
    at org.jboss.system.deployers.ServiceDeployer.start(ServiceDeployer.java:163)  
    at org.jboss.system.deployers.ServiceDeployer.deploy(ServiceDeployer.java:99) 
    at org.jboss.system.deployers.ServiceDeployer.deploy(ServiceDeployer.java:46)  
    at org.jboss.deployers.spi.deployer.helpers.AbstractSimpleRealDeployer.internalDeploy(AbstractSimpleRealDeployer.java:62)  
    at org.jboss.deployers.spi.deployer.helpers.AbstractRealDeployer.deploy(AbstractRealDeployer.java:50)  
    at org.jboss.deployers.plugins.deployers.DeployerWrapper.deploy(DeployerWrapper.java:171)  
    at org.jboss.deployers.plugins.deployers.DeployersImpl.doDeploy(DeployersImpl.java:1439)  
    at org.jboss.deployers.plugins.deployers.DeployersImpl.doInstallParentFirst(DeployersImpl.java:1157)  
    at org.jboss.deployers.plugins.deployers.DeployersImpl.doInstallParentFirst(DeployersImpl.java:1178)  
    at org.jboss.deployers.plugins.deployers.DeployersImpl.install(DeployersImpl.java:1098)  
    at org.jboss.dependency.plugins.AbstractControllerContext.install(AbstractControllerContext.java:348)  
    at org.jboss.dependency.plugins.AbstractController.install(AbstractController.java:1631)  
    at org.jboss.dependency.plugins.AbstractController.incrementState(AbstractController.java:934)  
    at org.jboss.dependency.plugins.AbstractController.resolveContexts(AbstractController.java:1082)  
    at org.jboss.dependency.plugins.AbstractController.resolveContexts(AbstractController.java:984)  
    at org.jboss.dependency.plugins.AbstractController.change(AbstractController.java:822)  
    at org.jboss.dependency.plugins.AbstractController.change(AbstractController.java:553)  
    at org.jboss.deployers.plugins.deployers.DeployersImpl.process(DeployersImpl.java:781)  
    at org.jboss.deployers.plugins.main.MainDeployerImpl.process(MainDeployerImpl.java:702)  
    at org.jboss.system.server.profileservice.repository.MainDeployerAdapter.process(MainDeployerAdapter.java:117)  
    at org.jboss.system.server.profileservice.repository.ProfileDeployAction.install(ProfileDeployAction.java:70)  
    at org.jboss.system.server.profileservice.repository.AbstractProfileAction.install(AbstractProfileAction.java:53)  
    at org.jboss.system.server.profileservice.repository.AbstractProfileService.install(AbstractProfileService.java:361)  
    at org.jboss.dependency.plugins.AbstractControllerContext.install(AbstractControllerContext.java:348)  
    at org.jboss.dependency.plugins.AbstractController.install(AbstractController.java:1631)  
    at org.jboss.dependency.plugins.AbstractController.incrementState(AbstractController.java:934)  
    at org.jboss.dependency.plugins.AbstractController.resolveContexts(AbstractController.java:1082)  
    at org.jboss.dependency.plugins.AbstractController.resolveContexts(AbstractController.java:984)  
    at org.jboss.dependency.plugins.AbstractController.change(AbstractController.java:822)  
    at org.jboss.dependency.plugins.AbstractController.change(AbstractController.java:553)  
    at org.jboss.system.server.profileservice.repository.AbstractProfileService.activateProfile(AbstractProfileService.java:306)  
    at org.jboss.system.server.profileservice.ProfileServiceBootstrap.start(ProfileServiceBootstrap.java:271)  
    at org.jboss.bootstrap.AbstractServerImpl.start(AbstractServerImpl.java:461)  
    at org.jboss.Main.boot(Main.java:221)  
    at org.jboss.Main$1.run(Main.java:556)  
    at java.lang.Thread.run(Unknown Source)  

Вот структура моего проекта:

  • /src/struts.xml
  • /src/struts2demo/логин/действие/Логин.java
  • /WebContent/META-INF/MANIFEST.MF
  • /WebContent/WEB-INF/web.xml
  • /Веб-контент/home.jsp
  • /Веб-контент/логин.jsp

Вот мои файлы конфигурации: web.xml:

<?xml version="1.0" encoding="UTF-8"?>  
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
    xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"  
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"  
    id="WebApp_ID" version="2.5">  
    <display-name>struts2demo</display-name>  
    <filter>  
        <filter-name>struts2</filter-name>  
        <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>  
    </filter>  
    <filter-mapping>  
        <filter-name>struts2</filter-name>  
        <url-pattern>/*</url-pattern>  
    </filter-mapping>  
    <welcome-file-list>  
        <welcome-file>login.jsp</welcome-file>  
    </welcome-file-list>  
</web-app>  

ПРИМЕЧАНИЕ. Я получаю аналогичную ошибку, когда мой класс фильтра — org.apache.struts2.dispatcher.FilterDispatcher.

распорки.xml:

<?xml version="1.0" encoding="UTF-8" ?>  
<!DOCTYPE struts PUBLIC  
    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"  
    "http://struts.apache.org/dtds/struts-2.0.dtd">   
<struts>  
    <package name="struts2demo" extends="struts-default">  
        <action name="Login"  
            class="struts2demo.login.action.Login">  
            <result>/home.jsp</result>  
            <result name="error">/login.jsp</result>  
        </action>  
    </package>  
</struts>  

.класспуть:


person Mark J Miller    schedule 04.01.2010    source источник
comment
Только что закончил свой ответ о классе StrutsPrepareAndExecuteFilter   -  person VonC    schedule 05.01.2010


Ответы (3)


Похоже, у вас могут отсутствовать JAR-файлы Struts 2 в пути к классам. Перейдите в свойства проекта -> Путь сборки Java -> Библиотеки и убедитесь, что все необходимые JAR-файлы Struts 2 перечислены в разделе Библиотеки веб-приложений.

person Dan    schedule 04.01.2010
comment
Я добавил весь каталог lib и все еще получаю ту же ошибку. Поэтому я попробовал isocra.com/2006/02/jarfinder, и это не помогло. кажется, находит любой класс (FilterDispatcher или StrutsPrepareAndExecuteFilter). Я мог бы запустить его неправильно, но, похоже, его не существует. Я знаю, что что-то упускаю, просто не могу понять, что. - person Mark J Miller; 05.01.2010
comment
Итак, моя проблема заключалась в том, что я не включил указанные файлы jar в путь сборки И в локальный каталог lib. Если бы я прочитал ваш ответ более внимательно, а не просто просматривал, я бы нашел свой ответ намного раньше. - person Mark J Miller; 05.01.2010

Не могли бы вы сравнить свои файлы web.xml и struts.xml с это руководство (хотя в нем используется сервер apache-tomcat 6, а не JBoss)

Даже если об этой ошибке было сообщено в комментарии, учебник работает.


Я нашел ваш класс в этом Struts -2.1.8.tgz (см. docjar), если соответствующий файл jar в загрузке Struts упоминается в загрузке Struts, все должно быть в порядке.

WEB-INF
  lib
    struts-core2.1.8.jar
person VonC    schedule 04.01.2010
comment
все еще получаю ClassNotFound - должно быть, я что-то напортачил. Я собираюсь попробовать настроить свою среду с нуля и посмотреть, прояснит ли это ситуацию. - person Mark J Miller; 05.01.2010

Хорошо... Я смог отладить основные ошибки с помощью некоторых простых вещей, которые теперь имеют для меня смысл. Я использую плагин tomcat для Eclipse Helios с Tomcat 7. Извините, если этот пост слишком очевиден... я новичок в этом.

Ошибки и как я их разрешил: - 1. СЕРЬЕЗНЫЙ: исключение запуска фильтра struts2 java.lang.ClassNotFoundException: org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter

Решение: я скопировал все jar-файлы из примера приложения struts2. Доступно здесь -> (пришлось удалить, так как stackoverflow не позволяет мне публиковать более одной ссылки) Я скопировал все jar-файлы в web-inf/lib этой войны в мой web-inf/lib проекта eclipse. Все еще получил эту ошибку.... при проверке я увидел, что тот же сервер использовался моими предыдущими версиями, которые я удалил, удалив этот сервер и воссоздав его в eclipse.... убедился, что он не ссылается на библиотеку моей предыдущей версии поверх мою текущую библиотеку, проверив конфигурацию времени выполнения для моего проекта и создав новый каталог lib отдельно от моего web-inf/lib и установив его в пути сборки. Решил эту конкретную ошибку.

  1. Затем появились некоторые весенние ошибки, такие как SpringObjectFactory not found и прочее.

Решение: удалены все пружинные банки из моей библиотеки, такие как spring-beans, плагин пружинных распорок и т. д. Решена эта конкретная ошибка.

  1. Затем появились ошибки xwork2 -> com.opensymphony.xwork2.inject.DependencyException: и некоторые исключения времени выполнения Java.

Решение. Вам необходимо указать пакет классов действий в файле web.xml. Благодаря почтовому архиву... я смог решить эту проблему. Ссылка -> http://mail-archives.apache.org/mod_mbox/struts-user/200908.mbox/%[email protected]%3E Вы должны упомянуть свой пакет действий следующим образом в файле web.xml:

<filter> <filter-name>struts2</filter-name> <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class> <init-param> <param-name>actionPackages</param-name> <param-value>myapp.actions</param-value> </init-param>
</filter>

Вот и все. Теперь это работает.

person Srikanth    schedule 30.01.2011