Dai pessoal andei dando uma boa pesquisada inclusive mandando uns e-mail para o exterior mas não encontrei nenhuma alma que me ajudasse a gerar um .class através do .java no diretório que eu queria.
Encontrei esse link que a pincipio tinha o que eu procurava.
http://www.javalobby.org/java/forums/m91985882.html
Um método chamado
JavaCompilerTool compiler = ToolProvider.defaultJavaCompiler();
compiler.setOutputDirectory(new File("c:/temp2/output"));
Aparentemente tudo ok
Dai veio o problema.
Precisava de uma classe que segundo o autor estava no tools.jar que fica no diretório lib da jdk
Essa é a bendita.
javax.tools.JavaCompilerTool;
Blz vasculhei esse jar e nada dessa classe achei que poderia ser a minha versão do java, pois bem baixei acho que todas as versões hehe mas não encontrei, dai mandei e-mail pro autor desse artigo mas ele não respondeu.
Se alguém tem alguma explicação para me dar a respeito dessa classe que deveria estar no tools.jar mas não encontrei.
Acabei desistndo
Então fiz copiando o arquivo mesmo.
Se alguém se interessar.
Segue o código.
public void geraClasseTeste (String classe, Class cls) {
montaClasse(cls, classe);
try {
String path = "c:/Development/ApplicationsNetBeans/TesteSoftware/src/br/com/tcc/view/" + classe;
OutputStream os = new FileOutputStream(path + "Test.java");
FileWriter f = new FileWriter(path + "Test.java");
PrintWriter saida = new PrintWriter(new FileWriter("c:/log.txt"));
f.write(new GeraClasseTeste().montaClasse(cls, classe));
f.close();
int resultadoCompilacao = com.sun.tools.javac.Main.compile(
new String[]{path + "Test.java"}, saida);
if (resultadoCompilacao == 0) {
String srcFileName = path + "Test.class";
String dstFileName = "C:/Development/ApplicationsNetBeans/TesteSoftware/build/classes/br/com/tcc/view/"
+ classe + "Test.class" ;
copyFile(srcFileName, dstFileName);
JOptionPane.showMessageDialog(null, "Criou o arquivo .class sem nenhum Erro");
} else {
JOptionPane.showMessageDialog(null, "Erro ao tentar compilar a classe");
}
saida.close();
}
catch (Throwable e) {
System.err.println("Erro ao tentar gerar classe de teste " + e);
// e.printStackTrace();
}
}
public void copyFile(String srcFileName, String dstFileName) {
try {
FileChannel srcChannel =
new FileInputStream(srcFileName).getChannel();
FileChannel dstChannel =
new FileOutputStream(dstFileName).getChannel();
dstChannel.transferFrom(srcChannel, 0, srcChannel.size());
srcChannel.close();
dstChannel.close();
} catch (IOException e) {
e.printStackTrace();
throw new RuntimeException("Unable to copy file.", e);
}
}
Vlw pela força.
Abraço.