| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 10/03/2003 00:51:11
|
turnes
HelloWorld
Membro desde: 06/03/2003 00:55:21
Mensagens: 14
Offline
|
Olá, pessoal. O meu novo problema é o seguinte:
preciso executar este trecho de código abaixo, que chama um outro
arquivo que tb contém um main, ou seja, é como se um executável
chamasse outro.
O erro retornado é o seguinte: java.lang.ArrayIndexOutOfBoundsException.
Quando eu não passo parâmetros, ou seja, quando args.length é igual
a zero, tudo funciona legal. Já testei o código que recebe o nome do
arquivo por parâmetro em DOS e tb funcionou. O problema está nessa
passagem de parâmetro.
Não tenho idéia do que pode ser.
|
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 10/03/2003 07:32:38
|
mlopes
JavaTeenager
![[Avatar]](/images/avatar/c3e26d423e3654fab1f76.jpg)
Membro desde: 18/11/2002 11:01:01
Mensagens: 163
Localização: Alemanha
Offline
|
Tente :
[]'s
|
Marco Lopes
----------------------------------------------------------
Pássaro que cedo madruga....
... porém o segundo rato é quem pega o queijo
---------------------------------------------------------- |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 10/03/2003 09:02:19
|
turnes
HelloWorld
Membro desde: 06/03/2003 00:55:21
Mensagens: 14
Offline
|
Coloquei
String args[] = new String[1] e deu um erro do tipo:
java.lang.reflect.InvocationTargetException
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 10/03/2003 10:07:55
|
mlopes
JavaTeenager
![[Avatar]](/images/avatar/c3e26d423e3654fab1f76.jpg)
Membro desde: 18/11/2002 11:01:01
Mensagens: 163
Localização: Alemanha
Offline
|
Ola,
Esse erro significa que exite algo de errado no método main da sua classe Novo.
Coloque:
E então copie aqui o erro para que a gente possa te ajudar.
[]'s
|
Marco Lopes
----------------------------------------------------------
Pássaro que cedo madruga....
... porém o segundo rato é quem pega o queijo
---------------------------------------------------------- |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 10/03/2003 11:02:20
|
Elvis.The.Pelvis
JavaGuru
![[Avatar]](/images/avatar/c8a589523f35508a5d7ec.jpg)
Membro desde: 18/12/2002 17:45:34
Mensagens: 220
Localização: Recife/PE
Offline
|
InvocationTargetException é lançada quando o método que sofreu reflexão lança uma exceção. Seu método main está lançando alguma exceção.
|
Se não fosse o C, até hoje estaríamos programando em BASI, PASAL e OBOL.
Elvis.The.Pelvis é Daniel Freitas |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 11/03/2003 14:03:11
|
turnes
HelloWorld
Membro desde: 06/03/2003 00:55:21
Mensagens: 14
Offline
|
Pois é, o que eu não entendo é o seguinte:
se eu eliminar a passagem de parâmetros,
a linha de código args[0] = "nome do arquivo" ,
a outra classe funciona normalmente, porque ela tb recebe
entrada de dados direto do teclado, como no DOS, e não dá erro desse
jeito.
Eu acredito e tenho ceretza que o erro está nessa passagem de
parâmetros e como recebi esta instrução de outra pessoa, não sei o que
pode ser.
Já procurei instruções na net e não encontrei nada que pudesse resolver.
HELPE ME!!!!!!!!
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 11/03/2003 17:37:51
|
dukejeffrie
Virtual Machine Man
![[Avatar]](/images/avatar/c74d97b01eae257e44aa9d5bade97baf.png)
Membro desde: 21/08/2002 03:53:28
Mensagens: 661
Offline
|
Mas é exatamente o que o Elvis falou.
por acaso seu método main interno, vamos chamá-lo assim, lança exceção? Tente declará-lo assim:
Desse jeito dá pra descobrir se o pau foi aí. Aliás, lançar qq exception é trash, mantenha as exceptions discriminadas sempre.
ArrayIndexOutOfBounds pode significar que o seu primeiro parâmetro (args[0]) contém uma string nula, vazia, sei lá, o que não parece lógico e absolutamente nunca aconteceria numa chamada normal.
Vc pode pegar a causa da InvocationTargetException() com o método getCause();
Mas to achando estrando essa variavel args[]. Você não precisa dela, pode fazer assim:
[]s do duke!
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 12/03/2003 05:43:41
|
mlopes
JavaTeenager
![[Avatar]](/images/avatar/c3e26d423e3654fab1f76.jpg)
Membro desde: 18/11/2002 11:01:01
Mensagens: 163
Localização: Alemanha
Offline
|
Ola,
Eu fiz um pequeno teste, talvez ajude.
Agora o alvo:
[]'s
|
Marco Lopes
----------------------------------------------------------
Pássaro que cedo madruga....
... porém o segundo rato é quem pega o queijo
---------------------------------------------------------- |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 12/03/2003 16:47:54
|
dukejeffrie
Virtual Machine Man
![[Avatar]](/images/avatar/c74d97b01eae257e44aa9d5bade97baf.png)
Membro desde: 21/08/2002 03:53:28
Mensagens: 661
Offline
|
hehehe... getTargetException(), e não getCause()... : )
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 13/03/2003 09:41:15
|
turnes
HelloWorld
Membro desde: 06/03/2003 00:55:21
Mensagens: 14
Offline
|
Olá, pessoal.
Desculpe-me mlopes, mas o trecho de código que a princípio vc me
mandou, funionou. O que não percebi é que depois gerava um outro erro.
Na verdade é o seguinte. Estou fazendo um ambiente de apredizagem de
algoritmos (Projeto de Pesquisa pela faculdade) que deve compilar o que
o usuário escreve (a segunda classe que eu chamo é o compilador).
Quando eu compilo a primeira vez, beleza! Porém, depois dá o seguinte erro:
"Second call to constructor of static parser. You must either use
ReInit() or set the JavaCC option Static to false during parser generation."
Vocês podem me ajudar?
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 13/03/2003 10:42:37
|
mlopes
JavaTeenager
![[Avatar]](/images/avatar/c3e26d423e3654fab1f76.jpg)
Membro desde: 18/11/2002 11:01:01
Mensagens: 163
Localização: Alemanha
Offline
|
Ola,
Não sei quais ferramentas vc está usando, mas a mensagem é clara. Vc deve checar se o Parser já foi inicializado, se já foi, ao invés de criar um novo, chame o método reInit. Se é que vc quer usar o Parser como sigleton. Se não, atribua falso. à essa opção do static.
A propósito, qual parser vc está usando ? Eu usei o JLex a muito tempo atrás.
[]'s
|
Marco Lopes
----------------------------------------------------------
Pássaro que cedo madruga....
... porém o segundo rato é quem pega o queijo
---------------------------------------------------------- |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 13/03/2003 15:48:19
|
turnes
HelloWorld
Membro desde: 06/03/2003 00:55:21
Mensagens: 14
Offline
|
Olah..
Eu estou usando o gerador JavaCC. Ele gera tanto o analisador léxico
quanto o sintático. Agora estou implementando o analisador semântico,
que é a parte mais chatinha...
Mas voltando ao nosso assunto, como assim atribuir falso no static?
Não seria melhor eu destruir a classe depois que eu já utilizei? Pois o erro
é pq estou, no caso, chamando duas vezes o construtor.
[]'s,
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 14/03/2003 05:36:54
|
mlopes
JavaTeenager
![[Avatar]](/images/avatar/c3e26d423e3654fab1f76.jpg)
Membro desde: 18/11/2002 11:01:01
Mensagens: 163
Localização: Alemanha
Offline
|
Bom,
Acredito que vc usa algo do tipo parser = TheParser(java.io.InputStream stream) . Vc deve então sempre checar se o seu parser é null. Se não for, chame TheParser.ReInit(java.io.InputStream stream).
Como eu não conheço bem o Javacc, não posso ajudar muito mais do q isso. Espero que funcione.
[]'s
|
Marco Lopes
----------------------------------------------------------
Pássaro que cedo madruga....
... porém o segundo rato é quem pega o queijo
---------------------------------------------------------- |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 18/03/2003 16:50:51
|
turnes
HelloWorld
Membro desde: 06/03/2003 00:55:21
Mensagens: 14
Offline
|
Pois é, no JavaCC é diferente...
Você sabe como chamar um procedimento de uma classe já
instanciada?
O código a seguir não funciona!!!
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 18/03/2003 18:15:18
|
dukejeffrie
Virtual Machine Man
![[Avatar]](/images/avatar/c74d97b01eae257e44aa9d5bade97baf.png)
Membro desde: 21/08/2002 03:53:28
Mensagens: 661
Offline
|
Eu acredito que, ainda mais por vc estar gerando código, vc deveria usar um parser dinâmico (ou seja, setar, no JavaCC, a opção para static parser como false).
O target do ant que chama o javacc tem a opção static = true | false | yes | no
No Google Groups, achei uma thread com um cara que teve exatamente o mesmo problema que você. Um outro respondeu o seguinte:
You need to set the STATIC option to false, and delete the
ASCII_CharStream.java file so that it will be regenerated.
Add the line
options{STATIC=false;}
to the beginning of your grammar file.
Tomara que isso resolva!!
[]s
|
|
|
 |
|
|