[RESOLVIDO]Problemas com struts 2

Sou iniciante e tenho assistido video aulas para aprender, seguir uma ensinand o struts 2 mas no final o que fiz n funcionou, quando tento acessar a página aparece erro de HTTP 404 já re-vi e refiz tudo o que pedia, estou usando tomcat 6 e struts 2.1.6 e importei para o projeto commons-logging, freemaker,ognl, struts2-coree e xwork, e isso é o que aparece no console e tb vou colocar no final o web.xml e o struts.xml.

[color=red]30/07/2009 11:49:01 org.apache.tomcat.util.digester.SetPropertiesRule begin
WARNING: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property ‘source’ to ‘org.eclipse.jst.jee.server:Aula03’ did not find a matching property.
30/07/2009 11:49:01 org.apache.catalina.core.AprLifecycleListener init
INFO: The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: C:\Arquivos de programas\Java\jre6\bin;.;C:\WINDOWS\Sun\Java\bin;C:\WINDOWS\system32;C:\WINDOWS;C:/Arquivos de programas/Java/jre6/bin/client;C:/Arquivos de programas/Java/jre6/bin;D:\oracle\ora92\bin;C:\Arquivos de programas\Oracle\jre\1.3.1\bin;C:\Arquivos de programas\Oracle\jre\1.1.8\bin;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\Arquivos de programas\Symantec\pcAnywhere;C:\Arquivos de programas\Microsoft SQL Server\80\Tools\Binn;C:\Arquivos de programas\Microsoft SQL Server\90\Tools\binn;C:\Arquivos de programas\Microsoft SQL Server\90\DTS\Binn;C:\Arquivos de programas\Microsoft SQL Server\90\Tools\Binn\VSShell\Common7\IDE;C:\Arquivos de programas\Microsoft Visual Studio 8\Common7\IDE\PrivateAssemblies;D:\Eclipse\Android SDK\android-sdk-windows-1.5_r3\tools
30/07/2009 11:49:02 org.apache.coyote.http11.Http11Protocol init
INFO: Initializing Coyote HTTP/1.1 on http-8080
30/07/2009 11:49:02 org.apache.catalina.startup.Catalina load
INFO: Initialization processed in 1208 ms
30/07/2009 11:49:02 org.apache.catalina.core.StandardService start
INFO: Starting service Catalina
30/07/2009 11:49:02 org.apache.catalina.core.StandardEngine start
INFO: Starting Servlet Engine: Apache Tomcat/6.0.20
30/07/2009 11:49:03 com.opensymphony.xwork2.util.logging.commons.CommonsLogger info
INFO: Parsing configuration file [struts-default.xml]
30/07/2009 11:49:03 org.apache.catalina.core.StandardContext filterStart
SEVERE: Exception starting filter struts2
Unable to load configuration. - bean - jar:file:/D:/workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/Aula03/WEB-INF/lib/struts2-core-2.1.6.jar!/struts-default.xml:46:178
at com.opensymphony.xwork2.config.ConfigurationManager.getConfiguration(ConfigurationManager.java:58)
at org.apache.struts2.dispatcher.Dispatcher.init_PreloadConfiguration(Dispatcher.java:360)
at org.apache.struts2.dispatcher.Dispatcher.init(Dispatcher.java:403)
at org.apache.struts2.dispatcher.ng.InitOperations.initDispatcher(InitOperations.java:69)
at org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.init(StrutsPrepareAndExecuteFilter.java:48)
at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:275)
at org.apache.catalina.core.ApplicationFilterConfig.setFilterDef(ApplicationFilterConfig.java:397)
at org.apache.catalina.core.ApplicationFilterConfig.(ApplicationFilterConfig.java:108)
at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:3800)
at org.apache.catalina.core.StandardContext.start(StandardContext.java:4450)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
at org.apache.catalina.core.StandardHost.start(StandardHost.java:722)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443)
at org.apache.catalina.core.StandardService.start(StandardService.java:516)
at org.apache.catalina.core.StandardServer.start(StandardServer.java:710)
at org.apache.catalina.startup.Catalina.start(Catalina.java:583)
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.apache.catalina.startup.Bootstrap.start(Bootstrap.java:288)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:413)
Caused by: Unable to load bean: type:org.apache.struts2.dispatcher.multipart.MultiPartRequest class:org.apache.struts2.dispatcher.multipart.JakartaMultiPartRequest - bean - jar:file:/D:/workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/Aula03/WEB-INF/lib/struts2-core-2.1.6.jar!/struts-default.xml:46:178
at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.register(XmlConfigurationProvider.java:222)
at org.apache.struts2.config.StrutsXmlConfigurationProvider.register(StrutsXmlConfigurationProvider.java:101)
at com.opensymphony.xwork2.config.impl.DefaultConfiguration.reloadContainer(DefaultConfiguration.java:165)
at com.opensymphony.xwork2.config.ConfigurationManager.getConfiguration(ConfigurationManager.java:55)
… 22 more
Caused by: java.lang.NoClassDefFoundError: org/apache/commons/fileupload/FileUploadException
at java.lang.Class.getDeclaredConstructors0(Native Method)
at java.lang.Class.privateGetDeclaredConstructors(Unknown Source)
at java.lang.Class.getDeclaredConstructors(Unknown Source)
at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.register(XmlConfigurationProvider.java:212)
… 25 more
Caused by: java.lang.ClassNotFoundException: org.apache.commons.fileupload.FileUploadException
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1387)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1233)
at java.lang.ClassLoader.loadClassInternal(Unknown Source)
… 29 more
30/07/2009 11:49:03 org.apache.catalina.core.StandardContext start
SEVERE: Error filterStart
30/07/2009 11:49:03 org.apache.catalina.core.StandardContext start
SEVERE: Context [/Aula03] startup failed due to previous errors
30/07/2009 11:49:03 org.apache.coyote.http11.Http11Protocol start
INFO: Starting Coyote HTTP/1.1 on http-8080
30/07/2009 11:49:03 org.apache.jk.common.ChannelSocket init
INFO: JK: ajp13 listening on /0.0.0.0:8009
30/07/2009 11:49:03 org.apache.jk.server.JkMain start
INFO: Jk running ID=0 time=0/47 config=null
30/07/2009 11:49:03 org.apache.catalina.startup.Catalina start
INFO: Server startup in 1169 ms[/color]

Aqui é o web.xml

[code]<?xml version="1.0" encoding="UTF-8"?>

Aula03

struts2
org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter

<filter-mapping>
    <filter-name>struts2</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>
index.jsp [/code]

e esse é o struts.xml

[code]<?xml version="1.0" encoding="UTF-8" ?>

<constant name="struts.enable.DynamicMethodInvocation" value="false" />
<constant name="struts.devMode" value="false" />

<package name="default" extends="struts-default">
    <default-action-ref name="home" />
    <action name="home">
        <result>
            /WEB-INF/pages/home.jsp
        </result>
    </action>
</package>
[/code]

A causa real do problema é indicada aqui nesta linha:
Caused by: java.lang.NoClassDefFoundError: org/apache/commons/fileupload/FileUploadException

Quando o Tomcat faz o deploy da sua aplicação ele carrega o filtro do Struts 2

<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>   

Esse por sua vez começa a configurar os interceptors (se você ainda não aprendeu sobre interceptors, eles são recursos que o framework disponibiliza para auxiliar em procedimentos comuns durante o desenvolvimento, upload de arquivos, validação, conversão de valores etc…) que estão definidos no seu struts.xml, como você está usando o grupo de interceptors padrão do struts 2 (extends=“struts-default”) ele tenta configurar o interceptador de upload de arquivos (que faz o tratamento dos arquivos enviados por formulário). Esse interceptador depende da biblioteca commons-fileupload.jar da Apache (que possui a classe FileUploadException que está faltando na hora de rodar a sua aplicação), provavelmente você não tem essa biblioteca na pasta WEB-INF/lib/ da sua aplicação.

Se a biblioteca estiver lá, tente reconstruir a aplicação.

Dicas:
Dentro do pacote padrão da biblioteca struts2-core.jar existe o arquivo struts-default.xml lá existe a lista de todos os interceptors que pertencem ao pacote struts-default, provavelmente nas video aulas que você está seguindo eles ainda vão te ensinar mais para frente como configurar o struts 2 para utilizar somente os interceptors que a sua aplicação precisa.
Para saber mais sobre os interceptadores (alguns são muito úteis) dê uma olhada nesta página: http://struts.apache.org/2.1.6/docs/interceptors.html#Interceptors-FrameworkInterceptors

Nessa página constam as dependências de cada interceptor, caso você enfrente esse problema novamente, verifique se não está faltando nenhuma biblioteca.

Vlw, funcionou, era isso e obrigado pela dica.

Cara, obrigado…
Segui uma video aula de um site e nao conseguia passar disso… Foi só add a commons-fileupload e funcionou beleza.

Obrigado.

Ótima explicação!
Também estou tentando entender o funcionando do struts e tinha travado no mesmo erro!
Alguém se habilita a mostrar como posso configurar o interceptor pra não precisar adicionar a lib citada?
Tentei de algumas maneiras, mas se não add continuou o mesmo erro!

Uma das maneiras que tentei:

[code]






login.jsp /secure/home

[/code]
Fonte: http://struts.apache.org/2.1.6/docs/how-do-we-configure-an-interceptor-to-be-used-with-every-action.html

Encontrei o erro!

Eu havia chamado na solução apresentada porém este defaultSatck é uma pilha de interceptor organizada no struts-default.xml e nesta pilha consta uma chamada que usa a tal lib, vejam:

<interceptor-stack name="defaultStack"> <interceptor-ref name="exception"/> <interceptor-ref name="alias"/> <interceptor-ref name="servletConfig"/> <interceptor-ref name="i18n"/> <interceptor-ref name="prepare"/> <interceptor-ref name="chain"/> <interceptor-ref name="debugging"/> <interceptor-ref name="scopedModelDriven"/> <interceptor-ref name="modelDriven"/> <interceptor-ref name="fileUpload"/> <interceptor-ref name="checkbox"/> <interceptor-ref name="multiselect"/> <interceptor-ref name="staticParams"/> <interceptor-ref name="actionMappingParams"/> <interceptor-ref name="params"> <param name="excludeParams">dojo\..*,^struts\..*</param> </interceptor-ref> <interceptor-ref name="conversionError"/> <interceptor-ref name="validation"> <param name="excludeMethods">input,back,cancel,browse</param> </interceptor-ref> <interceptor-ref name="workflow"> <param name="excludeMethods">input,back,cancel,browse</param> </interceptor-ref> </interceptor-stack>

Coloquei então um default interceptor qualquer (que não usa o fileUpload) e funcionou sem a bendita fileUpload, fiz assim:

<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd"> <struts> <package name="default" extends="struts-default"> <default-interceptor-ref name="params"/> </package> </struts>

valeu galera

o meu estava com mesmo problema e foi resolvido depois que coloquei
as bibliotecas citadas abaixo no diretório WEB-INF/lib do meu projeto …

commons-fileupload-X.X.X.jar (detalhe esta é para resolver o problema ) commons-io-X.X.X.jar commons-logging-X.X.X.jar commons-logging-api.X.X.jar freemarker-X.X.X.jar ognl-X.X.X.jar struts2-core-X.X.X.X.jar xwork-core-X.X.X.jar

obrigado

Alguem saberia como faria pra corrigir esse problema caso ocorra utilizando o deploy pelo maven? é necessário alterar algum xml pra poder “suprimir” esse artefacto no pom.xml??

Para o caso meu erro foi:

GRAVE: Exception starting filter struts2
java.lang.ClassNotFoundException: org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1645)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1491)
at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:269)
at org.apache.catalina.core.ApplicationFilterConfig.setFilterDef(ApplicationFilterConfig.java:422)
at org.apache.catalina.core.ApplicationFilterConfig.(ApplicationFilterConfig.java:115)
at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:4001)
at org.apache.catalina.core.StandardContext.start(StandardContext.java:4651)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
at org.apache.catalina.core.StandardHost.start(StandardHost.java:785)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:445)
at org.apache.catalina.core.StandardService.start(StandardService.java:519)
at org.apache.catalina.core.StandardServer.start(StandardServer.java:710)
at org.apache.catalina.startup.Catalina.start(Catalina.java:581)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414)
18/12/2010 15:55:42 org.apache.catalina.core.StandardContext start
GRAVE: Error filterStart
18/12/2010 15:55:42 org.apache.catalina.core.StandardContext start
GRAVE: Context [/struts2_jsp_example] startup failed due to previous errors