[RESOLVIDO] Erro com a Função 'Executar Java'



  • Boa tarde pessoal,

    Eis o seguinte cenário, adicionei um .jar a meu projeto e ao efetuar uma chamada a uma determinada classe deste .jar, me deparo com o famoso 'java.lang.NoClassDefFoundError', não encontrei referencia alguma para este erro nesta função, alguém já passou por este cenário?

    Erro: [code] java.util.concurrent.ExecutionException: java.lang.NoClassDefFoundError: br/com/aquarius/teste/Testador at java.util.concurrent.FutureTask$Sync.innerGet(FutureTask.java:215) at java.util.concurrent.FutureTask.get(FutureTask.java:85) at wfr.rules.WFRRule.execute(WFRRule.java:1851) at wfr.rules.WFRRule.execute(WFRRule.java:1823) at wfr.web.actions.ExecuteRuleAction.execute(ExecuteRuleAction.java:188) at wfr.web.Action.doAction(Action.java:126) at wfr.web.Controller.process(Controller.java:100) at wfr.web.Controller.doPost(Controller.java:67) 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 wfr.web.ContextFilter.doFilter(ContextFilter.java:86) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) 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.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:433) 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(Thread.java:595) Caused by: java.lang.NoClassDefFoundError: br/com/aquarius/teste/Testador at wfr.com.systems.system_sir.rules.ExecuteJava_1109507342.run(ExecuteJava_1109507342.java:27) at wfr.com.systems.system_sir.rules.WebrunFunctions.executeJavaFunction(WebrunFunctions.java:16154) at wfr.com.systems.system_sir.rules.FluxoJavaTeste.run(FluxoJavaTeste.java:53) at wfr.rules.WFRRule.start(WFRRule.java:749) at wfr.rules.WFRRule.call(WFRRule.java:1811) at wfr.rules.WFRRule.call(WFRRule.java:54) at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:269) at java.util.concurrent.FutureTask.run(FutureTask.java:123) at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:650) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:675) ... 1 more Causa: java.lang.NoClassDefFoundError: br/com/aquarius/teste/Testador at wfr.com.systems.system_sir.rules.ExecuteJava_1109507342.run(ExecuteJava_1109507342.java:27) at wfr.com.systems.system_sir.rules.WebrunFunctions.executeJavaFunction(WebrunFunctions.java:16154) at wfr.com.systems.system_sir.rules.FluxoJavaTeste.run(FluxoJavaTeste.java:53) at wfr.rules.WFRRule.start(WFRRule.java:749) at wfr.rules.WFRRule.call(WFRRule.java:1811) at wfr.rules.WFRRule.call(WFRRule.java:54) at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:269) at java.util.concurrent.FutureTask.run(FutureTask.java:123) at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:650) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:675) at java.lang.Thread.run(Thread.java:595) [/code] Chamada via JNA a uma classe no .JAR: [code] br.com.teste.Testador obj = new br.com.teste.Testador(); return new Variant(obj.metodo()); OU br.com.teste.Testador obj = new br.com.teste.Testador(); return VariantPool.get(obj.metodo()); [/code]
    Alguém tem alguma dica, ou conhece outro lugar que eu possa pesquisar sobre este erro?!?


    Abç!


  • Você colocou o JAR na pasta Web-INF/Lib?

    Reiniciou o Webrun?


  • Olá amigo,

    Adicionei meu .jar no diretorio

    .../Webrun 2\systems\MeuProjetoDEV\WEB-INF\lib

    Como pede no manual pra o uso de bibliotecas externas.

    Este erro 'teoricamente' foi corrigido, porém agora o mesmo ocorre de forma esporádica, ao alterar o fluxo que executa uma chamada via JNA a um .jar externo por exemplo, algumas vezes ele não reconhece as classes do .jar, mesmo eu parando o serviço e republicando-o, inacreditavelmente tenho que reiniciar meu PC, mas como disse, o .jar já não é meu maior problema agora, mas sim o fato do webrun compilado com o jre6 que solicitei a Softwell (meu .jar utiliza-se de bibliotecas mais recentes) não subir, saberia me dizer se apenas preciso substituir o webrun da pasta do server, pela nova versão (fiz desta forma e não subiu), ous e tenho que realizar outras alterações também, solicitei esta informação no suporte e até agora nada.

    Um abç!


  • Você está com uma versão JRE6 já?
    Senão, http://download.softwell.com.br/makergold/webrun/Webrun_Gold_2_7_0_34_JRE6.zip
    Para atualizar, vc deve:
    a. Parar o serviço do Webrun (Tomcat),
    b. Apagar o war e a pasta descompactada pelo Tomcat,
    c. Extrair o conteúdo do link para a pasta "webapps";
    d. Iniciar o serviço.

    Lembre-se que toda vez que você apaga a pasta "webrun" descompactada, vc deve adicionar seu JAR novamente na pasta WEB-INF/Lib


  • OK, assim que realizar o procedimento e os testes, atualizo aqui!


    Abç!


  • [quote="Ronélio Oliveira"]Você está com uma versão JRE6 já?
    Senão, http://download.softwell.com.br/makergold/webrun/Webrun_Gold_2_7_0_34_JRE6.zip
    Para atualizar, vc deve:
    a. Parar o serviço do Webrun (Tomcat),
    b. Apagar o war e a pasta descompactada pelo Tomcat,
    c. Extrair o conteúdo do link para a pasta "webapps";
    d. Iniciar o serviço.

    Lembre-se que toda vez que você apaga a pasta "webrun" descompactada, vc deve adicionar seu JAR novamente na pasta WEB-INF/Lib[/quote] Amigo, este procedimento também não funcionou! Existe alguma restrição para este webrun que você me passou, pois a versão que o suporte me passou [url]http://download2.softwell.com.br/webrun-27034jre6.war[/url], também não funcionou desta maneira que você citou, que é a mesma que o suporte me passou também.

    A versões que utilizamos são:
    Maker 2.7
    Webrun 2.7.0.34
    Tipo de licença Enterprise


    Completando esta lista:
    SO: Windows 7 SPK 1
    Processador AMD Phenom II X2 555 3.20 GHz - 64bits


  • Além disso, não. Por acaso está utilizando o botão "Republicar?"


  • [quote="Ronélio Oliveira"]Além disso, não. Por acaso está utilizando o botão "Republicar?"[/quote] Bom dia Ronélio, Após muitas tentativas, acabei reinstalando o software e agora está 'subindo' com o webrun jre6, no entanto meu .jar utiliza a biblioteca [b]java.util.concurrent.TimeUnit[/b] que não é compatível com o java 5, logo; seguindo os passos do manual contidos no website [url]http://suporte.softwell.com.br/maker/manual2_7/pt/Maker2.htm[/url] para alterar a versão do java 1.5 para a versão que 'desejo' 1.6, após seguir os passos e alterar a versão para a 1.6, o serviço novamente não sobe.

    Você tem, ou sabe qual versão do java 1.6 é compatível, para que eu possa substituí-lo?

    Abç!


  • Cara, o que te recomendo é:

    a. Desinstale qualquer versão do Java que vc possui;
    b. Instale a JDK 1.6;
    c. Instale o Apache-Tomcat (o mesmo que vai na instalação do Webrun); http://mirror.metrocast.net/apache/tomcat/tomcat-6/v6.0.36/bin/apache-tomcat-6.0.36.exe
    d. Após instalação, pare o serviço do tomcat;
    e. copie o arquivo "webrun.war" do JRE6. Para não ter dúvidas, http://download.softwell.com.br/makergold/webrun/Webrun_Gold_2_7_0_34_JRE6.zip
    f. Inicie o serviço novamente.

    Com este método (instalação independente), é necessário criar o WEBRUN_HOME

    Neste link tem um exemplo do Webrun HOME
    http://www.softwell.com.br/2012/09/17/criando-instancias-para-o-tomcat/


  • Blz man, vou realizar estes procedimentos, logo mais dou um feedback!

    Mais uma vez, obrigado!


  • [quote="Ronélio Oliveira"]Cara, o que te recomendo é:

    a. Desinstale qualquer versão do Java que vc possui;
    b. Instale a JDK 1.6;
    c. Instale o Apache-Tomcat (o mesmo que vai na instalação do Webrun); http://mirror.metrocast.net/apache/tomcat/tomcat-6/v6.0.36/bin/apache-tomcat-6.0.36.exe
    d. Após instalação, pare o serviço do tomcat;
    e. copie o arquivo "webrun.war" do JRE6. Para não ter dúvidas, http://download.softwell.com.br/makergold/webrun/Webrun_Gold_2_7_0_34_JRE6.zip
    f. Inicie o serviço novamente.

    Com este método (instalação independente), é necessário criar o WEBRUN_HOME

    Neste link tem um exemplo do Webrun HOME
    http://www.softwell.com.br/2012/09/17/criando-instancias-para-o-tomcat/[/quote] Bom dia Ronélio;

    Cara venho agradecer pela ajuda a estes problemas e sua dicas, o procedimento funcionou da maneira esperada, estou conseguindo acessar uma biblioteca de terceiro compilada no jre 6.


    [b]Para futuras pesquisas sobre o assunto segue algumas premissas e alguns detalhes:[/b]

    Utilizando bibliotecas de terceiros compiladas no java 6 no meu projeto MAKER:

    Efetuar o download do webrun compilado no jre 6 (caso o link contido no tópico esteja desatualizado, solicitar no suporte da Softwell ou, talvés por aqui seja mais rápido) e substituir o webrun da pasta do server pela versão baixada;

    Alterar a versão do java que o servidor (Apache) usará (EU fiz a alteração conforme segue no manual e não funcionou), tive que fazê-la da maneira citada no tutorial do Ronélio;

    Utilizando de chamadas via jna é possível acessar meus métodos contidos no .jar de terceiros;
    Ex: [code]br.com.mycompany.teste.TrestClass obj = new br.com.mycompany.teste.TrestClass(); return VariantPool.get(obj.meuMetodo());[/code]
    [b]Como configurei:[/b]

    Criar a seguinte hierarquia de pastas no diretório do Webrun, e adicionar seu .jar nele.

    C:\webrun\systems\PASTA_DE_MESMO_NOME_DO_SEU_PROJETO_MAKER\WEB-INF\lib\SEU_JAR_COM_MESMO_NOME_DO_PROJETO.jar

    Ao republicar o projeto, ficar atento se seu .jar foi adicionado a pasta:
    C:\Program Files\Tomcat\instance01\webapps\webrun\WEB-INF\lib\SEU_JAR_COM_MESMO_NOME_DO_PROJETO.jar


    Acho que é isso.

    Abç a todos!


  • Fico feliz por ter conseguido resolver!

    Tópico encerrado.

Log in to reply