[RESOLVIDO] Gerar e "carregar" Classe em runtime

Eu estou trabalhando com um código que gera classes baseadas em uma tabela do banco, Ex.:

...
   setClassConfig("net.projeto.dominio.Alguem", "TABELA_ALGUEM");
...

Eu gero essa classe “Alguem” no caminho especificado: “net/projeto/dominio” e bla bla bla…

O problema é que depois de executar esse código eu preciso “carregar” essa classe com um Class.forName()… porém ao referenciar a classe ocorre um erro dizendo que a mesma não foi encontrada…

Eu preciso compilar essa classe em runtime? O que mais eu preciso fazer para sincronizar o programa para que ele reconheça a existência dessa classe gerada em tempo de execução?

Agradeço antecipadamente…

Bom, eu estou usando a classe “JavaCompiler”, porém ela gera o arquivo no mesmo diretório do arquivo fonte. O problema é que o projeto está configurado para armazenar os arquivos compilados na pasta bin. Portanto, ao dar um Class.forName(“pacote.pacote.Classe”) ocorre um erro de classe não encontrada…

Tem como eu direcionar a saída desse JavaCompiler para o diretório de output das classes compiladas?

Bom, consegui resolver meu problema.

Aqui o código de exemplo:

package diversos;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Arrays;

import javax.tools.JavaCompiler;
import javax.tools.StandardJavaFileManager;
import javax.tools.StandardLocation;
import javax.tools.ToolProvider;
import javax.tools.JavaCompiler.CompilationTask;

public class TesteClassLoadewr {

	public static void main(String args[]) throws IOException, ClassNotFoundException {
		
		String binPath = "bin";

		String classeJava = 
			"package dominio.entidades;\n\n" + 
			"public class Usuario {\n\n" + 
			"\tpublic String email;\n" + 
			"\tpublic String senha;\n\n" + "}";

		File arquivo = new File("src/dominio/entidades/Usuario.java");

		if (!arquivo.exists()) {
			arquivo.createNewFile();
		}

		FileOutputStream fos = new FileOutputStream(arquivo);
		fos.write(classeJava.getBytes());
		fos.flush();
		fos.close();

		JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();
		
		StandardJavaFileManager standardJavaFileManager = compiler.getStandardFileManager(null, null, null);
		
		standardJavaFileManager.setLocation(StandardLocation.CLASS_OUTPUT, Arrays.asList(new File(binPath)));
		
		CompilationTask compilationTask = compiler.getTask(null, standardJavaFileManager, null, null, null, standardJavaFileManager.getJavaFileObjectsFromFiles(Arrays.asList(arquivo)));
		
		compilationTask.call();
		
		Class clazz = Class.forName("dominio.entidades.Usuario");
		
		System.out.println(clazz);

	}

}