title: Newbie: Build error running Struts2 on JBoss from Eclipse
body: <p>I've been a .NET developer for over 8 years now and I've been placed on a Java project and I'm trying to get up to speed. I'm using Eclipse EE 3.5.1, JBoss 5.1, and Struts 2.1.8.1 (all the latest versions as AFAIK). </p>
  
  <p>I'm trying to create a new project with a simple login and home page. But when I run my project from Eclipse I get the following build error:</p>
  
  <pre><code>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.&lt;init&gt;(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)  
  </code></pre>
  
  <p>Here's my project structure:</p>
  
  <ul>
  <li>/src/struts.xml</li>
  <li>/src/struts2demo/login/action/Login.java</li>
  <li>/WebContent/META-INF/MANIFEST.MF</li>
  <li>/WebContent/WEB-INF/web.xml</li>
  <li>/WebContent/home.jsp</li>
  <li>/WebContent/login.jsp</li>
  </ul>
  
  <p>Here's my config files:
  web.xml:</p>
  
  <pre><code>&lt;?xml version="1.0" encoding="UTF-8"?&gt;  
  &lt;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"&gt;  
      &lt;display-name&gt;struts2demo&lt;/display-name&gt;  
      &lt;filter&gt;  
          &lt;filter-name&gt;struts2&lt;/filter-name&gt;  
          &lt;filter-class&gt;org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter&lt;/filter-class&gt;  
      &lt;/filter&gt;  
      &lt;filter-mapping&gt;  
          &lt;filter-name&gt;struts2&lt;/filter-name&gt;  
          &lt;url-pattern&gt;/*&lt;/url-pattern&gt;  
      &lt;/filter-mapping&gt;  
      &lt;welcome-file-list&gt;  
          &lt;welcome-file&gt;login.jsp&lt;/welcome-file&gt;  
      &lt;/welcome-file-list&gt;  
  &lt;/web-app&gt;  
  </code></pre>
  
  <p>NOTE: I get a similar error when my filter-class is org.apache.struts2.dispatcher.FilterDispatcher.</p>
  
  <p>struts.xml:</p>
  
  <pre><code>&lt;?xml version="1.0" encoding="UTF-8" ?&gt;  
  &lt;!DOCTYPE struts PUBLIC  
      "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"  
      "http://struts.apache.org/dtds/struts-2.0.dtd"&gt;   
  &lt;struts&gt;  
      &lt;package name="struts2demo" extends="struts-default"&gt;  
          &lt;action name="Login"  
              class="struts2demo.login.action.Login"&gt;  
              &lt;result&gt;/home.jsp&lt;/result&gt;  
              &lt;result name="error"&gt;/login.jsp&lt;/result&gt;  
          &lt;/action&gt;  
      &lt;/package&gt;  
  &lt;/struts&gt;  
  </code></pre>
  
  <p>.classpath:</p>