Voce pode utilizar o metodo "exec" da classe java.lang.System
para chamar o compilador externo, ou entao se utilizar do
proprio javac, que eh feito eh java e talvez voce possa chamar
a classe do javac diretamente de dentro do seu programa.

O unico problema eh que nesses casos voce provavelmente tera
que gerar um arquivo .java, ja que os compiladores nao compilam
a partir de um arquivo na memoria.

Algumas opcoes mais sofisticadas sao:

- pegar o codigo fonte do javac e tentar modifica-lo para seus
objetivos;
- verifiar se no o codigo fonte do Java Server Pages estao
incluidas as fontes do servlet engine. Se estiverem, ele faz
exatamente isso que voce esta querendo (compilacao on the fly), 
mas acho que utiliza arquivos no disco;
- escrever seu proprio compilador que gere as classes a partir
da memoria...

Acredito que a opcao mais simples seja chamar o javac.

Abracos,

Bruno.


Cleidson Ronald Botelho de Souza wrote:
> 
> ola,
> 
>     sei que atraves da implementacao de subclasses do classLoader ou
> atraves do forName eu posso carregar classes na memoria e criar
> instancias destes objetos. Mas (sempre existe um mas), e se eu quiser
> antes de fazer isso, compilar um codigo java para depois carrega-lo na
> memoria como eu faco?
>     Em outras palavras, meu programa ira gerar o codigo de uma classe em
> um arquivo .java, quero compilar esta classe e depois carrega-la na
> memoria.  Como eu faco?
> 
>     abracos,
> 
>         Cleidson
> 
> * Para nao receber mais e-mails da lista, acesse 
><http://www.sun.com.br:8080/guest/RemoteAvailableLists>, coloque seu e-mail, escolha 
>a lista <[EMAIL PROTECTED]> e de um <submit>.

-- 


Bruno.
______________________________________________________________________
Bruno Peres Ferreira de Souza                         Sun Microsystems
System Engineer - Java Technologist         [EMAIL PROTECTED]
        if I fail, if I succeed, at least I live as I believe
* Para nao receber mais e-mails da lista, acesse 
<http://www.sun.com.br:8080/guest/RemoteAvailableLists>, coloque seu e-mail, escolha a 
lista <[EMAIL PROTECTED]> e de um <submit>.

Responder a