Du meinst sowas wie die eval-Funktion in Perl oder JavaScript. Nein, das gibt es in Java leider nicht.Kann man irgendwie Java-Quellcode der zum Beispiel in einer TXT-Datei gespeichert wird, während der Laufzeit einlesen und ausführen. Falls "Ja" - gibts es Seiten mit guten Beispielen
Beni hat gesagt.:Willst du ein Compiler schreiben?
Zumindest *.class-Dateien kannst du mit ClassLoadern einbinden (siehe API und URLClassLoader...).
File fi = new File("C:\\method.jar");
URL u = null;
try {
u = fi.toURL();
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
ClassLoader cl = new URLClassLoader(new URL[]{u});
CheckInterface y = (CheckInterface) cl.loadClass(methodNumber).newInstance();
System.out.println(y.doIt(accountNumber));
....//Weil ich zu faul war immer wieder den Test-Code einzugeben - hab ich ihn vorher schon definiert.
JTextArea jtfEingabe = new JTextArea("public class hello { \n"+
"public static void main(String[] args)\n {System.out.println(\"HEllo\");\n }\n}");
....
public void actionPerformed(ActionEvent event)
{
//jBuDoIt ist der Button auf dem an drücken kann
if(event.getSource() == jBuDoIt)
{
try
{
System.out.println("Schriebe:");
DataOutputStream out = new DataOutputStream(
new BufferedOutputStream(
new FileOutputStream("c:\\javatemp\\hello.java")));
out.writeBytes(jtfEingabe.getText().replaceAll("\n",""));
out.close();
}
catch(Exception e)
{
System.out.println("Error: " + e.toString());
}
File fi = new File("c:\\javatemp\\hello.java");
if(fi.exists())
{
try {
System.out.println("Compeliere: ");
Process p = Runtime.getRuntime().exec( "javac "+ "c:\\javatemp\\hello.java");
try {
p.waitFor();
} catch (InterruptedException e2) {
// TODO Auto-generated catch block
e2.printStackTrace();
}
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
}
}
Process p = Runtime.getRuntime().exec( "javac "+ "c:\\javatemp\\hello.java");
Process p = Runtime.getRuntime().exec( "c:\\java\\bin\\javac "+ "c:\\javatemp\\hello.java");
Peter@Pan hat gesagt.:...der Wizard wird prüfen bevor er compeliert, ob die javac am angegeben Pfad ist (wird doch über file.exists() möglich sein?).