Erro upload de arquivos - JSP + Struts

4 respostas
denis_gariglio

Boa tarde pessoal, tudo bom?
Pessoal, procurei no forum mas não encontrei nada que pudesse me ajudar, no meu sistema, posso efetuar o upload de arquvios para um determinado local, mas acontece o seguinte erro:

[20111227123915] ERROR - org.apache.commons.beanutils.PropertyUtils  - Method invocation failed.
java.lang.IllegalArgumentException: argument type mismatch
	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.commons.beanutils.PropertyUtilsBean.invokeMethod(PropertyUtilsBean.java:1794)
	at org.apache.commons.beanutils.PropertyUtilsBean.setSimpleProperty(PropertyUtilsBean.java:1780)
	at org.apache.commons.beanutils.PropertyUtilsBean.setNestedProperty(PropertyUtilsBean.java:1675)
	at org.apache.commons.beanutils.PropertyUtilsBean.setProperty(PropertyUtilsBean.java:1704)
	at org.apache.commons.beanutils.BeanUtilsBean.setProperty(BeanUtilsBean.java:1063)
	at org.apache.commons.beanutils.BeanUtilsBean.populate(BeanUtilsBean.java:852)
	at org.apache.commons.beanutils.BeanUtils.populate(BeanUtils.java:343)
	at org.apache.struts.util.RequestUtils.populate(RequestUtils.java:842)
	at org.apache.struts.action.RequestProcessor.processPopulate(RequestProcessor.java:785)
	at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:243)
	at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1176)
	at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:472)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:845)
	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
	at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
	at java.lang.Thread.run(Unknown Source)
27/12/2011 12:39:15 org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Servlet.service() for servlet action threw exception
java.lang.IllegalArgumentException: Cannot invoke br.com.agsi.struts.form.CadUsuarioForm.setArquivo - argument type mismatch
	at org.apache.commons.beanutils.PropertyUtilsBean.invokeMethod(PropertyUtilsBean.java:1799)
	at org.apache.commons.beanutils.PropertyUtilsBean.setSimpleProperty(PropertyUtilsBean.java:1780)
	at org.apache.commons.beanutils.PropertyUtilsBean.setNestedProperty(PropertyUtilsBean.java:1675)
	at org.apache.commons.beanutils.PropertyUtilsBean.setProperty(PropertyUtilsBean.java:1704)
	at org.apache.commons.beanutils.BeanUtilsBean.setProperty(BeanUtilsBean.java:1063)
	at org.apache.commons.beanutils.BeanUtilsBean.populate(BeanUtilsBean.java:852)
	at org.apache.commons.beanutils.BeanUtils.populate(BeanUtils.java:343)
	at org.apache.struts.util.RequestUtils.populate(RequestUtils.java:842)
	at org.apache.struts.action.RequestProcessor.processPopulate(RequestProcessor.java:785)
	at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:243)
	at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1176)
	at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:472)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:845)
	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
	at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
	at java.lang.Thread.run(Unknown Source)

o trecho do JSP é o seguinte:

<html:file property="arquivo" accept="zip/zip" size="60" />

o Form, somente vou colocar o trecho onde delcaro o FormFile para não ficar poluido:

/**
     * Nome do arquivo.
     */
    private FormFile arquivo;

    /**
     * Retorna o nome do arquivo.
     * @return FormFile
     */
    public final FormFile getArquivo() {
        return arquivo;
    }

    /**
     * "Seta" o nome do arquivo.
     * @param file
     *            FormFile
     */
    public final void setArquivo(FormFile file) {
        arquivo = file;
    }

E o trecho no Action:

// INICIO -- Trecho onde vai efetuar o upload dos arquivos
                
                int codEmpresa = login.getEmpresa().getCodigo();
            
                File dir = new File("C:/bennet/"+codEmpresa+"/"+movUsu.getNroProt());
                boolean result = dir.mkdirs();
                System.out.println("retornou: " + result);
                
                EnviaArquivo enviaFtp =
                    new EnviaArquivo(
                            cadUsuarioForm.getArquivo().getInputStream(),
                            "C:/bennet/"+codEmpresa+"/"+movUsu.getNroProt());

            // FIM -- Trecho onde vai efetuar o upload dos arquivos

Aparentemente ele não encontra o arquivo ou o tipo, não sei ao certo o que pode ser, se alguem puder ajudar agradeço muito.

Vlwwww

Abraços

4 Respostas

Hebert_Coelho

Parece problema de versão de bibliotecas.

É o primeiro Upload que vc tenta fazer ou a rotina já existia e começou a dar pau agora?

denis_gariglio

Essa rotina existe de um sistema mais antigo que funfa de boa … vou tentar importar essas bibliotecas de la … caso não seja isso … mais alguma dica?
Vlwwww

[]s

denis_gariglio

Fiz o teste mas o erro continua =/

denis_gariglio

Para resolver o problema, eu precisei criar um novo form e classe separada para o upload, na mesma não foi.
Assim que criei uma nova somente para ele … com o mesmo codigo, funfou sem problemas.
Sei la o que poderia ser, o importante é que funfou …

Vlw pela força jakefrog.

[]s

Criado 27 de dezembro de 2011
Ultima resposta 27 de dez. de 2011
Respostas 4
Participantes 2