[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
- Subject: Re: Erro compilando os .java gerados a partir da IDL
- From: Emilio de Camargo Francesquini <emilio@xxxxxxxxxx>
- Date: Sun, 2 Nov 2003 13:16:12 -0200
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