Erro ou bug do jdk1.3

12 respostas
luiz_ross

Gente. olhem isso:

An exception has occurred in the compiler (1.3.0). Please file a bug at the Java Developer Connection (http://java.sun.com/cgi-bin/bugreport.cgi).  Include your program and the following diagnostic in your report.  Thank you.
java.lang.VerifyError: (class: com/sun/tools/javac/v8/comp/Enter$MemberEnter, method: signature signature: (Lcom/sun/tools/javac/v8/util/List;
Lcom/sun/tools/javac/v8/util/List;
Lcom/sun/tools/javac/v8/tree/Tree;
Lcom/sun/tools/javac/v8/util/List;
Lcom/sun/tools/javac/v8/comp/Env;)L?j
	at com.sun.tools.javac.v8.comp.Enter.<init>(Enter.java:75)
	at com.sun.tools.javac.v8.JavaCompiler.<init>(JavaCompiler.java:97)
	at com.sun.tools.javac.v8.JavaCompiler.make(JavaCompiler.java:117)
	at com.sun.tools.javac.v8.JavaCompiler.make(JavaCompiler.java:134)
	at com.sun.tools.javac.v8.Main.compile(Main.java:244)
	at com.sun.tools.javac.Main.main(Main.java:16)

Process completed.

12 Respostas

luiz_ross

Eu tava usando o JCreator e quando eu fui compilar o programa aconteceu isso que postei na mensagem anterior, o que quer dizer essa mensagem?

D

Parece que é erro do JDK.
Tem como mandar o código? Fica mais fácil encontrarmos o erro.

[]s

luiz_ross

Viu diogo, o ´codigo não tem erro nenhum, porque eu já tinha compilado ele e rodado também, só que ai eu fui mudar o tamanho de um JTextField e deu pau

Rafael_Steil

Talvez o bug ja esteja corrigido em uma versao mais nova do JDK. Tem uma pagina da Sun com o historico de bugs… vc pode procurar la ou tentar atualizar o java para ver se resolve o problema… BTW, qual eh o codigo?

Rafael

Paulo_Silveira

o problema nao eh o codigo

as vezes o JAVAC corrompe MESMO! e isso nao porque o JAVAC esta corrompido, mas porque o JAVA esta zoado!

o JAVAC eh uma aplicacao java. sempre quando voce chama o javac voce esta criando uma virtual machine. o javac eh escrito em java!

Rafael_Steil

Voce tem certeza que o javac eh uma aplicacao java? se eh, pq ele nao tem o mesmo formato dos .class? O “criando uma jvm” na tua frase eh meio vago… pelo que eu sei, a jvm eh feita em C ou C++ nativamente para cada SO.

Rafael

Paulo_Silveira

“Rafael Steil”:
Voce tem certeza que o javac eh uma aplicacao java? se eh, pq ele nao tem o mesmo formato dos .class? O “criando uma jvm” na tua frase eh meio vago… pelo que eu sei, a jvm eh feita em C ou C++ nativamente para cada SO.

Rafael

Tenho certeza sim. Ela TEM o formato .class

javac eh uma aplicacao java. ele eh .class REALMENTE

abra o seu TOOLS.jar dentro do dir lib da sua jdk
la dentro, entra no diretorio com/sun/tools/javac. TCHANS! Main.class!!! Bacana neh?

La dentro tem os aprsers LL, LR, tem os automatos finitos, tem a traducao do parseado para codigo binario da JVM (bytecode), etc.

O compilador javac eh INDEPENDENTE de plataforma. Quando voce executa javac.exe, eh apenas uma chamada para java com.sun.tools.javac.Main

saca soh:

C:j2sdk1.4.0lib>java -classpath tools.jar com.sun.tools.javac.Main a.java error: cannot read: a.java 1 error

Aaeaeaeae, executando javac a partir do java. RULEZ!
Melhor que isso soh compilar o codigo do javac com o javac :!:

Rafael_Steil

Bom, tudo bem… mas o javac em si nao acredito que seja independente. Olha so:

[rafael@localhost rafael]$ file /win98d/j2sdk1.4.0_01/bin/javac.exe
/win98d/j2sdk1.4.0_01/bin/javac.exe: MS-DOS executable (EXE), OS/2 or MS Windows
[rafael@localhost rafael]$ file /hd2/files/java/java/bin/javac
/hd2/files/java/java/bin/javac: ELF 32-bit LSB executable, Intel 80386, version 1, dynamically linked (uses shared libs), stripped
[rafael@localhost rafael]$ file java/Swing1.class 
java/Swing1.class: compiled Java class data, version 46.0
[rafael@localhost rafael]$

Os arquivos tem formatos diferentes. Mas tudo bem, acredito que seja um programa em java. Eh que li em um lugar uma vez onde dizia que a JVM eh dependente de plataforma, ou seja, eh feita em codigo nativo.

Rafael

Paulo_Silveira

Oi Rafael

lembre-se que o compilador nao faz parte da JVM. O compilador eh COMPLETAMENTE independente de plataforma, nao nativo. O .exe, obvio que nao eh java. Eh que nem o jedit e o eclipse, tem o .exe soh para encapsular a chamada ao JAVA. Eh que nem um startup.bat do tomcat.

JVM SEMPRE eh dependente de plataforma, claro. Mas o compilador nao faz parte da JVM, alias, se voce falar jvm por si soh, nem o rt.jar faz parte! o JRE = JVM + rt.jar

Olha soh, o compilador pode ateh ser chamado em codigo java

sun.tools.javac.Main comp = new sun.tools.javac.Main(System.out, null); 
boolean success = comp.compile(new String [] { "HelloWorld.java" });
D

O .exe ou o .sh é só um link para a execução do comando que chama o compilador Java.
Por isso que quando o Rafael tentou executar o “javac.exe” deu erro… é um executável e não vair rodar mesmo no unix.
Esse executável só tem a funcção de chamar a classe Main do compilador.

[]s

Paulo_Silveira

“diogompbr”:

Por isso que quando o Rafael tentou executar o “javac.exe” deu erro

ele não tentou executar, ele só usou um programinha que chama file, que vem na maioria das distribuicoes unix, que serve para falar o formato do arquivo.

melhor que esse programa, eh um que chama “strings”. alias, da pra ver claramente que o javac chama o java aqui:

bugs@PAULO-QUARTO /cygdrive/c/j2sdk1.4.0/bin
$ strings javac.exe | grep tool
com.sun.tools.javac.Main
\lib\tools.jar
Guilherme_Silveira

nivel teorico de linux: alto
nivel teorico de windows: alto
concrusao: (com r mesmo):

se javac nao eh independente de plataforma, nem tomcat nem eclipse nem jedit eh :slight_smile:
ehehehhe
adoro ser sarcastico e ironico

gui

Criado 1 de novembro de 2002
Ultima resposta 4 de nov. de 2002
Respostas 12
Participantes 5