compiling
hans-jörg
- java
hallo!
nachdem das dynamische generieren von java klassen mit meinem programm schon funktioniert, möchte ich diesen dynamisch erzeugten code auch noch aus meinem programm heraus kompilieren.
hab es schon mit verschiedenen varianten probiert.
unter anderem mit:
Runtime.getRuntime().exec("javac.exe -classpath <pfad zu meinen eigenen klassen> -sourcepath <pfad zur java-klasse>file.java");
leider hat noch nichts zum gewünschten erfolg geführt.
vielleicht kann mi da jemand weiterhelfen
mahlzeit,
da ja javac auch nur ein Programm ist müsste das über den Aufruf möglich sein. Du brauchst aber nur die Klasse mit der Main-funktion aufrufen, da der Rest eeh automatisch kompiliert wird. Probier mal das.
try{
String fn="c:\jdk1.3\bin\javac.exe main.class";
Runtime rt=Runtime.getRuntime();
pr=rt.exec( fn );
BufferedReader br = new BufferedReader(new InputStreamReader(pr.getInputStream()));
while (br.readLine() != null){}
pr.waitFor();
}
catch(Exception d){
....
}//catch
Cu Rico
hallo rico!
leider nicht, diese variante hab ich auch schon probiert.
danke mal für den vorschlag.
hans-jörg.
Hallöchen,
also ich habe das ausprobiert, das funktioniert auf jeden Fall unter WinNT4.0/SP4, viel Spaß. Sorry für den String mit testclass.class, muss ja testclass.java heissen.
import java.io.*;
public class Test{
public static void main(String arg[]){
System.out.println("Test\n");
try{
String fn="C:\Programme\JBuilder4\jdk1.3\bin\javac.exe colormenu.java";
Runtime rt=Runtime.getRuntime();
Process pr=rt.exec( fn );
BufferedReader br = new BufferedReader(new InputStreamReader(pr.getInputStream()));
while (br.readLine() != null){}
pr.waitFor();
}
catch(Exception d){
System.out.println("ex1:"+d);
}//catch
}
}
hallo!
»»Sorry für den String mit testclass.class, muss ja testclass.java heissen.
ja, hab ich ein bisschen dabei gerätselt, war mir dann aber klar.
also ich habs jetzt hingekriegt!
in einer abgewandelten form, aber es geht.
ich hab bei den parametern welche ich an javac mitübergebe einen gemeinen fehler gehabt, da das ganze ja nicht lokal, sondern auf einem linux server, unter tomcat4 ausgeführt werden soll.
zusätzlich lese ich die pfade zur javac.exe, den classpath und den sourcepath noch aus einer datenbank aus.
aber jetzt gehts ja.
danke für die hilfestellung.
hans-jörg.