[Resolvido] Erro ao compilar com JavaCompiler

1 resposta
Andr_a
Ao tentar compilar uma classe que usa outra classe do mesmo pacote  o seguinte erro:

[color=red]

D:\Users\Andreia\Documents\NetBeansProjects\JavaApplicationTeste\novoPrograma1\Teste.java:5: cannot find symbol

symbol  : class Pessoa

location: class novoPrograma1.Teste

Pessoa p = new Pessoa();

^

D:\Users\Andreia\Documents\NetBeansProjects\JavaApplicationTeste\novoPrograma1\Teste.java:5: cannot find symbol

symbol  : class Pessoa

location: class novoPrograma1.Teste

Pessoa p = new Pessoa();

^

2 errors

[/color]

A classe que estou tentando compilar está assim:

package novoPrograma1;

public class Teste {
    public static void main(String[] args) {
        Pessoa p = new Pessoa();
        p.setNome("Andréia");
        System.out.println("Hello, "+p.getNome()+"!");
    }
}

Para compilar uso esta classe:

public class CompilerTeste {

    private static String projectPath = "";
    private static String outputDir = "";

    static {
        try {
            projectPath = new File(".").getCanonicalPath() + "\\";
            outputDir = new File(".").getCanonicalPath() + "\\compiled";
        } catch (IOException e) {
            e.printStackTrace();
            throw new RuntimeException("Erro ao buscar o path do projeto. Exc: "
                    + e.getMessage());
        }
    }

    public static void main(String[] args) {

        String fileToCompile = java.io.File.separator + projectPath 
                + "novoPrograma1\\Teste.java";
        JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();

        int result = compiler.run(null, null, null, "-d", outputDir, fileToCompile);
        if (result == 0) {
            System.out.println("Compilação feita com sucesso!");
        } else {
            System.out.println("Erro, não foi possivel compilar");
        }
    }
}

Alguém sabe como resolver este problema?

1 Resposta

Andr_a

Eu consegui compilar meus arquivos com o JavaCompiler. Eu fiz assim:

import javax.tools.JavaCompiler;
import javax.tools.ToolProvider;

/**
 *
 * @author Andreia
 */
public class CompilerTeste {

    public void compilaArquivo(String caminho, String caminhoArquivo) {

        JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();

        int result = compiler.run(null, null, null, "-cp", caminho,
                caminhoArquivo);
        if (result == 0) {
            System.out.println("Arquivos compilados com sucesso!");
        } else {
            System.out.println("Erro ao compilar arquivo!");
        }
    } // fim do metodo compilaArquivo

    public static void main(String[] args) {
        String caminho = System.getProperty("user.dir");
        String pacote = "\\novoPrograma1";
        String arquivo = "Teste.java";
        String caminhoArquivo = caminho + pacote + "\\" + arquivo;

        CompilerTeste compilerTeste = new CompilerTeste();
        compilerTeste.compilaArquivo(caminho, caminhoArquivo);
    }
} // fim da classe CompilerTeste

Eu uso o -cp para informar o caminho onde está o pacote com os meus arquivos .java.

Descobri também outras duas maneiras de compilar arquivos.
Veja aqui: http://ateoriadadesevolucao.blogspot.com.br/2012/06/3-maneiras-para-compilar-arquivos-java.html

Criado 10 de junho de 2012
Ultima resposta 16 de jun. de 2012
Respostas 1
Participantes 1