[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



Oi Emílio,

Droga, eu tinha me esquecido desse problema! :-(

Você está usando o JDK 1.4.x, certo? Então a receita abaixo deve
funcionar. Se não estiver usando JDK 1.4.x, pare de ler por aqui
mesmo, que a minha sugestão não vai ajudar você em nada.

Primeiro delete todos os arquivos java gerados a partir dos arquivos 
IDL. (Não delete os arquivos IDL gerados pelo rmic.) Depois pegue os 
três arquivos IDL que eu deixei no diretório

http://www.ime.usp.br/~reverbel/SMA/trabalhos/ep2/jdk1.4-Throwable/

Copie o arquivo Throwable.idl desse diretório para cima do Throwable.idl
que o rmic gerou no seu subdiretório java/lang. Copie também para o seu 
subdiretório java/lang o arquivo StackTraceElement.idl. Finalmente, 
copie o arquivo seq1_StackTraceElement.idl para o seu subdiretório 
org/omg/boxedRMI/java/lang/ (crie tal subdiretório, caso você ainda não 
o tenha). 

Agora compile todos os IDLs com o idlj e compile os arquivos java.
Desta vez a compilação deve ser bem sucedida. (Mas se não for, é bola
fora minha mesmo...)

Depois que tudo funcionar eu explico o porquê da receita de bolo.

Boa sorte,

Reverbel

On Thu, 30 Oct 2003, Emilio de Camargo Francesquini wrote:

> Olá!
> 
> O que acontece é o seguinte: criei um EJB bem besta para testar a invocação
> através de IIOP e tentar colocar alguns interceptadores. Criei o EJB da maneira
> usual, compilei as suas classes e gerei as suas IDL's e usando os comandos
> sugeridos pelo Reverbel (abaixo):
> 
> >  rmic -classpath ... -idl -noValueMethods InterfRemotaDoEJB
> >  rmic -classpath ... -idl -noValueMethods InterfHomeDoEJB
> 
> Como esperado foi gerado um monte de arquivos, entre eles:
> 
> java.lang
>    Ex.idl
>    Exception.idl
>    Throwable.idl
>    Object.idl
>    ThrowableEx.idl
> javax.ejb 
>    CreateEx.idl
>    CreateException.idl
>    ...
> testes.ejb (o package do meu EJB de teste)
>    TesteHome.idl
>    Teste.idl
> 
> Pois bem, mandei compilar as idls com o idlj e foram gerados os .java. Até ai
> sem problemas. (a propósito, como faço, no ant, pra compilar um monte de idls
> com o idlj sem escrever um monte de <exec executable="idlj"....?)
> 
> O problema ocorre quando vou compilar esses .java gerados. Eles referenciam
> algumas classes que eu não encontrei em local algum. Vejam alguns dos erros:
> 
> output\client\java\lang\ThrowableDefaultFactory.java [15] cannot resolve symbol
> symbol  : class ThrowableImpl 
> location: class java.lang.ThrowableDefaultFactory
>     return is.read_value(new ThrowableImpl ());
>                              ^
> output\client\java\lang\_Exception.java [23] cannot resolve symbol
> symbol  : method _read (org.omg.CORBA.portable.InputStream)
> location: class java.lang.Throwable
>     super._read (istream);
>          ^
> output\client\java\lang\_Exception.java [28] cannot resolve symbol
> symbol  : method _write (org.omg.CORBA.portable.OutputStream)
> location: class java.lang.Throwable
>     super._write (ostream);
>          ^
> output\client\java\lang\_ExceptionDefaultFactory.java [15] cannot resolve symbol
> symbol  : class _ExceptionImpl 
> location: class java.lang._ExceptionDefaultFactory
>     return is.read_value(new _ExceptionImpl ());
>                              ^
> output\client\javax\ejb\CreateExceptionDefaultFactory.java [15] cannot resolve
> symbol
> symbol  : class CreateExceptionImpl 
> location: class javax.ejb.CreateExceptionDefaultFactory
>     return is.read_value(new CreateExceptionImpl ());
>                              ^
> output\client\javax\ejb\RemoveExceptionDefaultFactory.java [15] cannot resolve
> symbol
> symbol  : class RemoveExceptionImpl 
> location: class javax.ejb.RemoveExceptionDefaultFactory
>     return is.read_value(new RemoveExceptionImpl ());
>                              ^
> testes\cliente\ClienteTeste.java [22] cannot resolve symbol
> symbol  : method getHomeInterfaceClass ()
> location: interface javax.ejb.EJBMetaData
>         Class homeInterfaceClass = ejbMetaData.getHomeInterfaceClass();
>                                               ^
> 7 errors
> 
> 
> Alguém tem alguma idéia do que pode estar ocorrendo? 
> 
> 
> [ ]'s
> 
> --
> Emilio de Camargo Francesquini
> 
>