Descompilar e recompilar .jar(urgente!)

Srs.,

Tenho um arquivo .jar com vários classes (.class) com seus respectivos códigos fontes(.java). Preciso descompilar e recompilar essas classes no jdk1.4.1(o .jar foi compilado na ver 1.3).
Quando vejo o fonte o pacote é:

package com.sun.forte4j.persistence;

e neste pacote estão as classes:

-ConnectionFactory (tem o .java)
-ConnectionFactoryImpl(tem o .java)
-InstanceCallbacks(só tem o .class)
-JDODataStoreException(só tem o .class)

TEnho uns 6 .jar para migrar para jdk1.4.1. Como posso fazer isso ou onde posso conseguir essar classes.

Vc nao precisa recompilar nada pra migrar da 1.3.x pra 1.4.x. Pq vc quer fazer isso? :?

cv, caro colega,

Muito obrigado + 1 vez pelo seu interesse. O problema é o sequinte:

  • tenho uma aplicação complexa que foi desenvolvida em parceria com uma empresa agora, ele saíram fora, fiquei eu :frowning: . Tenho vários . jar dentre eles:

xerces.jar
dbshema.jar
persistence-rt-(empresa).jar

que estão no lib da minha aplicação. Algumas das minhas classes persistentes (model) fazem uma ligação direta com o banco via mapeamento(essas eu consegui recompilar na versão 1.4.1).O motivo é q quero hospedar minha aplicação num servidor web(ena roda na minha intranet) e o servidor web me oferece o jdk 1.4.1, simulei o ambiente deles local e naum funcionou.

Kra, acho muito trabalho, mas a forma “braçal” de se fazer este processo é assim:

Descompacta o arquivo JAR utilizando um descompactador de arquivos qualquer… (winzip/winrar/Braszip até o visualizador de arquivos do lotus notes)

Descompila os class utilizando o JAD (descompilador).
Apesar do código ficar ajeitado, o nome das variáveis fica muito bagunçado.

Se existe outra forma de descompilar eu desconheço, mas deve haver.

Hmmm, Xerces. Pode ficar tranquilo que o fato de o treco ter sido compilado no javac da 1.3 nao faz a menor diferenca, mas o seu erro pode estar sendo causado pela bosta do parser, e algum conflito de versao.

Que erro tah dando?

cv olha ai o erro …estou tentando instalar o ambiente em outra máquina…pois acho q o meu ambiente tá bichado…segue o erro:

org.apache.jasper.JasperException: Unable to compile class for JSP

An error occurred at line: 30 in the jsp file: /menu.jsp

Generated servlet error:
[javac] Compiling 1 source file
C:\Arquivos de programas\Apache Group\Tomcat 4.1\work\Standalone\localhost\saen\menu_jsp.java:8: ‘.’ expected
import Util;
^
C:\Arquivos de programas\Apache Group\Tomcat 4.1\work\Standalone\localhost\saen\menu_jsp.java:73: cannot resolve symbol
symbol : variable Util
location: class org.apache.jsp.menu_jsp
out.print(Util.montaMenu( (String) request.getSession().getAttribute(“usuarioLogado”)));
^
2 errors

at org.apache.jasper.compiler.DefaultErrorHandler.javacError(DefaultErrorHandler.java:120)
at org.apache.jasper.compiler.ErrorDispatcher.javacError(ErrorDispatcher.java:293)
at org.apache.jasper.compiler.Compiler.generateClass(Compiler.java:315)
at org.apache.jasper.compiler.Compiler.compile(Compiler.java:326)
at org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:474)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:182)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:289)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:240)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:247)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:260)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
at org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2397)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:180)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
at org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.java:170)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:171)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:174)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
at org.apache.coyote.tomcat4.CoyoteAdapter.service(CoyoteAdapter.java:223)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:405)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:380)
at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:508)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:533)
at java.lang.Thread.run(Thread.java:536)

Apache

o erro diz que o problema é q ela aguarda um ponto…porém no jdk1.3.1 não dá esse erro.

Rapaz, isso é erro de compilação do JSP, posta esse JSP aí pro povo olhar.

Maurício,

Valeu pelo alô vou postar o código mas creio que não é problema com o jsp pois naum achei nenhum erro.

<html>
<head>
<title>Sistema Acadêmico da Escola Naval  1.4</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<script TYPE="text/javascript" LANGUAGE="JavaScript" > <!--SRC="include/scripts.js"> -->
</script>
<link rel="stylesheet" href="include/scripts_menu.css" type="text/css">

<%@page contentType="text/html" import="en.model.*,[b]Util[/b]" %>
     
<%
 String requestIp = (String) request.getRemoteAddr();
System.out.println("meu remote ip>>>>"+requestIp);
 String faixa[] = {"10.0.16","10.0.17","10.0.18","10.0.24","10.0.31","127.0.0"};
 boolean autorizado = false;
 for (int i=0;i<faixa.length;i++){
      if(requestIp.substring(0,7).equals(faixa[i])) autorizado=true;
 }
 //boolean autorizado = true;
 if (autorizado){
 String usuarioLogado = (String) request.getSession().getAttribute("usuarioLogado");
%> 
</head>
<body bgcolor="#FFFFFF" leftmargin="0" topmargin="0" marginwidth="0" marginheight="0"  text="#FFFFFF"  vlink="#000000" link="#000000">

<table width="100%" border="0" cellspacing="0" cellpadding="0"  height="100%">
    <%if (usuarioLogado=="erro"){
        usuarioLogado = null;%>
        <SCRIPT>alert ("Senha incorreta, verifique Caixa alta ou baixa e tente novamente.");</SCRIPT>
    <%}%>
    <%=Util.montaMenu( (String) request.getSession().getAttribute("usuarioLogado"))%>
    <%if(usuarioLogado!=null)  {%>
           <tr>
             <TD> </TD>
             <td>
              </br><b><a href='Logout' target='leftFrame' class='menu'><center>[Logout]</b>
              <b><a href='AlterarSenha' target='mainFrame' class='menu'><center>[Alterar Senha]</b>
              <center><%=usuarioLogado%></b>
             </td>
           </tr>
    <%}
     else {%>
            <form name='form1' method='post' action='Login'>
                <tr> 
                    <td valign='top' class='tit_menu' colspan='2'><img src='imagens/novo_spacer.gif' width='10' height='6'></td>
                </tr>
                <tr > 
                    <td valign='top' background='imagens/novo_bg_login.jpg' class='menu' colspan='2' height='24'> 
                    <div align='center'><img src='imagens/novo_texto_login.jpg' width='64' height='24'></div>
                    </td>
                </tr>
                <tr > 
                    <td valign='top' class='menu' colspan='2' bgcolor='#DEDEDE'> 
                    <div align='center'>Usuário: 
                    <input type='text' size='12' style='width:108px; height:17px;font-family:verdana; color:#124986; font-size:10px' name='usuario' maxlength='255'>
                    <br>Senha: 
                    <input type='password' size='12' style='width:108px; height:17px;font-family:verdana; color:#124986; font-size:10px' name='senha' maxlength='255'>
                    <br>
                    <img src='imagens/novo_spacer.gif' width='50' height='2'><br>
                    <input type='submit' size='12' style='width:70px; height:22px;font-family:verdana; color:#124986; font-size:10px'name='Login' value='Login'>
                    </div>
                    </td>
                </tr>
                <tr> 
                    <td valign='top' class='tit_menu' colspan='2'><img src='imagens/pontinho.gif' width='100%' height='3'></td>
                </tr>
                <tr> 
                    <td valign='top' class='tit_menu' colspan='2'><img src='imagens/novo_spacer.gif' width='50' height='20'></td>
                </tr>
            </form>
      <% }
 }else{%>
<center><font color='red'><br>Acesso<br>Negado<br>maiores informações:<br><br>3974-1409</font></center>
<%
  /*        EscolaNaval en = new EscolaNaval();
          SecretariaEscolar se = new SecretariaEscolar(en);
          se.addLog("Menu","anonimo","tentativa de acesso pelo IP: "+requestIp);
          en.close();*/
           
}%>

</table>

</body>
<%//en.close();%>   
</html>

foi mal…perai…

<%@page contentType="text/html" import="en.model.*,Util" %>
     
<%
 String requestIp = (String) request.getRemoteAddr();
System.out.println("meu remote ip>>>>"+requestIp);
 String faixa[] = {"10.0.16","10.0.17","10.0.18","10.0.24","10.0.31","127.0.0"};
 boolean autorizado = false;
 for (int i=0;i<faixa.length;i++){
      if(requestIp.substring(0,7).equals(faixa[i])) autorizado=true;
 }
 //boolean autorizado = true;
 if (autorizado){
 String usuarioLogado = (String) request.getSession().getAttribute("usuarioLogado");
%> 
</head>
<body bgcolor="#FFFFFF" leftmargin="0" topmargin="0" marginwidth="0" marginheight="0"  text="#FFFFFF"  vlink="#000000" link="#000000">

<table width="100%" border="0" cellspacing="0" cellpadding="0"  height="100%">
    <%if (usuarioLogado=="erro"){
        usuarioLogado = null;%>
        <SCRIPT>alert ("Senha incorreta, verifique Caixa alta ou baixa e tente novamente.");</SCRIPT>
    <%}%>
    <%=Util.montaMenu( (String) request.getSession().getAttribute("usuarioLogado"))%>
    <%if(usuarioLogado!=null)  {%>
           <tr>
             <TD> </TD>
             <td>
              </br><b><a href='Logout' target='leftFrame' class='menu'><center>[Logout]</b>
              <b><a href='AlterarSenha' target='mainFrame' class='menu'><center>[Alterar Senha]</b>
              <center><%=usuarioLogado%></b>
             </td>
           </tr>
    <%}
     else {%>
            <form name='form1' method='post' action='Login'>
                <tr> 
                    <td valign='top' class='tit_menu' colspan='2'><img src='imagens/novo_spacer.gif' width='10' height='6'></td>
                </tr>
                <tr > 
                    <td valign='top' background='imagens/novo_bg_login.jpg' class='menu' colspan='2' height='24'> 
                    <div align='center'><img src='imagens/novo_texto_login.jpg' width='64' height='24'></div>
                    </td>
                </tr>
                <tr > 
                    <td valign='top' class='menu' colspan='2' bgcolor='#DEDEDE'> 
                    <div align='center'>Usuário: 
                    <input type='text' size='12' style='width:108px; height:17px;font-family:verdana; color:#124986; font-size:10px' name='usuario' maxlength='255'>
                    <br>Senha: 
                    <input type='password' size='12' style='width:108px; height:17px;font-family:verdana; color:#124986; font-size:10px' name='senha' maxlength='255'>
                    <br>
                    <img src='imagens/novo_spacer.gif' width='50' height='2'><br>
                    <input type='submit' size='12' style='width:70px; height:22px;font-family:verdana; color:#124986; font-size:10px'name='Login' value='Login'>
                    </div>
                    </td>
                </tr>
                <tr> 
                    <td valign='top' class='tit_menu' colspan='2'><img src='imagens/pontinho.gif' width='100%' height='3'></td>
                </tr>
                <tr> 
                    <td valign='top' class='tit_menu' colspan='2'><img src='imagens/novo_spacer.gif' width='50' height='20'></td>
                </tr>
            </form>
      <% }
 }else{%>
<center><font color='red'><br>Acesso<br>Negado<br>maiores informações:<br><br>3974-1409</font></center>
<%
  /*        EscolaNaval en = new EscolaNaval();
          SecretariaEscolar se = new SecretariaEscolar(en);
          se.addLog("Menu","anonimo","tentativa de acesso pelo IP: "+requestIp);
          en.close();*/
           
}%>

</table>

</body>

Cara, Bugou geral! Que diabo é isso?

POR FAVOR, quando forem postar partes em HTML, NAO desmarquem o checkbox “Desabilitar HTML”, senao logico que vai dar pau na mensagem :evil:

Alias, usem a funcionaidade de anexar arquivos ao inves de colar tanto codigo assim.

Rafael

VAleu Rafael…foi mal…

Todos os métodos que você está chamando nessa classe Util são estáticos? Ela está na raiz do seu classpath?

mauricio…perai…to ocupado…to no trabalho…

Cara…eu simplesmente não consigo rodar…quando passo pra jkd1.4.1 …quando retorno minha aplicaçãoa pra jdk1.3.1(q tb é a minha jvm) funciona!!!e aparece esse erro maluco!!!cara tá tudo certo…

Cara, você não respondeu o que eu perguntei.

O erro que está aparecendo é que ele não está encontrando essa classe aí, porque ele tenta chamar o método estático e pensa que isso é uma variável.

CV…Como posso resolver esse problema do parser???

Mauricio,

Todos os métodos são estáticos…e públicos…Util é uma classe que está no diretório WEB-INF da minha aplicação…logo não está na raiz…o cv falou q é erro de parser…deve ser isso pq na versão…1.3.1 roda normalmente…mas…como posso contornar essa situação…q doideira…será q é algum bug da versão1.4.1_07 (épra essa q eu kro migrar). Que loucura!!!

Ok, antes de mais nada, vamos deixar uma coisa bem claro?

NUNCA AUTOMATICAMENTE ASSUMA QUE A CULPA EH DA FERRAMENTA QUE VOCE ESTA USANDO. :wink:

Aquele problema de conflito do parser que eu tinha mencionado eh uma das poucas zicas de migracao da 1.3 pra 1.4 que eu conhecia, e tava so jogando ele no ar pq ele era ate plausivel. Mas, depois desse erro de JSP nao compilando por erro de sintaxe, fica mais facil perceber que vc esta fazendo alguma outra coisa de errado.

As versoes do Tomcat sao as mesmas?

são as mesmas versões…olha esse otro erro ae…

include/_0002finclude_0002fheader_0002ejspheader_jsp_0.java [17:1] ‘.’ expected
import Global;
^
include/_0002finclude_0002fheader_0002ejspheader_jsp_0.java [83:1] cannot resolve symbol
symbol : variable Global
location: class include._0002finclude_0002fheader_0002ejspheader_jsp_0
out.print(titulo+" ("+Global.getInstance().getAnoVigente()+")");
^
2 errors
Errors compiling CadastrarUsuarioForm.

Todas as minhas classes não esta importando nada!!!