[Prévia] [Próxima] [Prévia por assunto] [Próxima por assunto]
[Índice cronológico] [Índice de assunto]

Re: Erro compilando os .java gerados a partir da IDL



Olá!


Funcionou.

Obrigado.



Citando Francisco Reverbel <reverbel@ime.usp.br>:

> Olá Emílio,
> 
> Você não está fazendo nada errado. A minha sugestão é que não foi 
> completa, pois ela só resolvia parte do problema. Agora que eu já 
> estou "escaldado", fui fazer um teste antes de responder...
> 
> Depois de dizer "rmic ... -idl ...", delete os seguintes arquivos 
> gerados pelo rmic:
> 
>    javax/ejb/RemoveException.idl
>    javax/ejb/CreateException.idl
>    java/lang/Throwable.idl
>    java/lang/Exception.idl
> 
> Em seguida pegue os arquivos IDL que eu deixei no diretório 
> 
>    http://www.ime.usp.br/~reverbel/SMA/trabalhos/ep2/idl-exception-defs/
> 
> e copie-os para cima dos seguintes arquivos gerados pelo rmic:
> 
>    javax/ejb/RemoveEx.idl
>    javax/ejb/CreateEx.idl
>    java/lang/ThrowableEx.idl
>    java/lang/Ex.idl
> 
> Feito isso, rode o idlj para traduzir os arquivos IDL (tanto os que eu 
> forneci como os que o rmic gerou) para Java. Vão aparecer uns avisos 
> como este:
> 
> > javax/ejb/EJBObject.idl (line 61):  WARNING: Identifier `primaryKey' 
> > collides with a keyword; use an escaped identifier to ensure future 
> > compatibility. 
> >        readonly attribute ::java::lang::_Object primaryKey;
>  
> Ignore esses avisos e compile todos os arquivos Java gerados pelo idlj. 
> (Não é preciso mais deletar arquivo nenhum.) Agora compilação deve ser 
> bem sucedida.
> 
> O problema é que algumas das definições IDL geradas pelo rmic, quando
> traduzidas para Java, estavam conflitando com classes já existentes nos
> pacotes java.lang e javax.ejb. Eu me livrei dessas definições, que estavam 
> nos arquivos RemoveException.idl, CreateException.idl, Throwable.idl e
> Exception.idl. Aí eu tive que mexer nos arquivos IDL que usavam os
> valuetypes cujas definições IDL foram deletadas. Eu substituí todas
> as referências para esses valuetypes por uma referência genérica para 
> ValueBase.
> 
> A regra geral é: livre-se de toda definição IDL que contiver uma diretiva
> "#pragma ID" com uma seqüência de 32 dígitos hexadecimais. Essas diretivas
> aparecem nas definições de valuetypes que correspondem a classes Java já 
> existentes. Delete todo o arquivo IDL que contiver algo como
> 
> #pragma ID Throwable
> "RMI:java.lang.Throwable:F8678B4F4D2EB705:D5C635273977B8CB"
> 
> (Se você estivesse usando outra linguagem, esse arquivo IDL ajudaria a
> gerar a classe Throwable nessa linguagem. Mas para quem está usando Java, 
> um arquivo assim só atrapalha!)
> 
> Não delete os arquivos IDL que contiverem diretivas "#pragma ID" com
> seqüências de 16 dígitos iguais a zero. Uma diretiva como
> 
> #pragma ID Cart "RMI:examples.Cart:0000000000000000"
> 
> aparece na definição (em IDL) de uma interface RMI chamada por clientes 
> CORBA. Você precisa desse arquivo IDL para gerar um stub CORBA.
> 
> Bom trabalho,
> 
> Reverbel
> 
> On Sat, 1 Nov 2003, Emilio de Camargo Francesquini wrote:
> 
> > Olá..
> > 
> > Mais um capítulo na novela da compilar os .java gerados a partir da
> IDL...
> > 
> > São gerados diversos arquivos a partir da IDL no diretório java/lang.
> Acontece
> > que um deles é um arquivo de nome Throwable.java que define uma classe
> Throwable
> >  do package java.lang !! Não consigo compilar os arquivos deste diretório
> e
> > consequentemente os outros arquivos. Recebo um erro mais estranho que o
> outro, o
> > abaixo é um exemplo! 
> > 
> > symbol  : method getMessage ()
> > location: class java.lang.ClassNotFoundException
> >       synchronized (org.omg.CORBA.TypeCode.class)
> >                                  ^
> > Fatal Error: Unable to locate method getMessage
> > 
> > Que getMessage() é esse?
> > 
> > Parece que o javac começa a se perder com a localização das classes e chega
> uma
> > hora que não sabe mais qual Throwable é qual (dado que ambos Throwable
> estão no
> > mesmo package).
> > 
> > Professor, a idéia é que estes arquivos tivesses sido mesmo gerados?
> Estou
> > fazendo algo muito errado...
> > 
> > Segue anexo o Throwable.idl gerado a partir das classes do meu EJB. Como
> ultimo
> > recursi também tentei substituir o Throwable.idl que gerei por aquele que
> você
> > tinha enviado, mas tive os mesmos erros.
> > 
> > [ ]'s
> > 
> > 
> > /**
> >  * java/lang/Throwable.idl
> >  * Generated by rmic -idl. Do not edit
> >  * Sábado, 1 de Novembro de 2003 15h16min53s BRST
> >  */
> > 
> > #include "orb.idl"
> > 
> > #ifndef __java_lang_Throwable__
> > #define __java_lang_Throwable__
> > 
> > 
> > module java {
> > module lang {
> > 
> >     custom valuetype Throwable {
> >     };
> > 
> > #pragma ID Throwable
> "RMI:java.lang.Throwable:F8678B4F4D2EB705:D5C635273977B8CB"
> > 
> > };
> > };
> > 
> > #endif
> > 
> > 
> > 
> > Quoting Francisco Reverbel <reverbel@ime.usp.br>:
> > 
> > > Bola fora minha, Emílio. :-( 
> > > 
> > > Vocês devem estar pensando eu estou maluco... E devo estar mesmo,
> > > pois a receita que eu dei é para um outro problema, que não tem 
> > > nada a ver com o EP de vocês.
> > > 
> > > Por favor ignorem a minha mensagem anterior. Já deletei aqueles
> > > arquivos IDL que eu tinha mandado vocês usarem. Desculpas ao Emílio
> > > e a quem quer que tenha perdido tempo com a sugestão errada.
> > > 
> > > Agora a sugestão (que espero esteja!) certa: deletem os arquivos
> > > *Factory.java gerados pelo idlj. Esses arquivos contém definições
> > > de value factories, que são desnecessárias no caso de RMI valuetypes.
> > > Mais detalhes em classe...
> > > 
> > > Reverbel
> > 
> > 
> 
> 


--
Emilio de Camargo Francesquini