Olá, galera.
Tenho um problema com a compilação de classes java em runtime, adianto que já olhei os tópicos e não obtive solução para meu problema, dessa forma, solicito a ajuda de todos.
Tenho uma aplicação hipotética, com duas classes, A e B, sendo que A é superclasse de B
A classe A está num pacote diferente da classe B, dessa forma:
C:\apps\java\br\com\empresa\teste\pkg1\A.java
C:\apps\java\br\com\empresa\teste\pkg2\B.java
No caso, “C:\apps\java” é o root do contexto da aplicação, os pacotes seriam “br.com.empresa.teste.pkg1” e “br.com.empresa.teste.pkg2”
Em um programa java, chamo o método com.sun.tools.javac.Main.compile, que embute o javac, pra compilar as classes. Qdo vai compilar a classe B, rodando o comando
com.sun.tools.javac.Main.compile(new String[]{"C:\apps\java\br\com\empresa\teste\pkg2\B.java"},log);
ocorre o erro abaixo:
C:\apps\java\br\com\empresa\teste\pkg2\B.java:5: package br.com.empresa.teste.pkg1 does not exist
import br.com.empresa.teste.pkg1.A;
^
C:\apps\java\br\com\empresa\teste\pkg2\B.java:7: cannot find symbol
symbol: class A
public class B extends A {
^
2 errors
Se eu estivesse no prompt de comando, era fácil, era só digitar
C:> cd \apps\java
C:\apps\java> javac br\com\empresa\teste\pkg2\B.java
E a classe compilaria corretamente. Mas, nesse caso, não sei mudar o diretório corrente.
Se eu passar o caminho relativo no comando, ou seja:
com.sun.tools.javac.Main.compile(new String[]{"br\com\empresa\teste\pkg2\B.java"},log);
Ocorre o erro:
error: cannot read: br\com\akasha\irissoftware\bb\core\bean\Bbcom010.java
1 error
Ou seja, de jeito algum dá certo.
Alguem sabe como resolvo esse impasse?
Agradeço a todos a paciência e a força.
Abraços,
Buosi.