Hallo,
ich moechte waehrend meines Programmablaufs, eine neue Klasse ausfuehren. Dazu habe ich folgenden Quellcode:
Beim ausfuehren kommt nun folgende Fehlermeldung:
"java.lang.UnsupportedClassVersionError: com/sun/tools/javac/Main (Unsupported major.minor version 49.0)"
Was stimmt da nicht?
Die compile()-Methode sollte ich laut Compiler statisch aufrufen, obwohl ich im Netz immer nur die nicht statische Variante gefunden habe.
Wer kann mir helfen?
tschau
Antje
ich moechte waehrend meines Programmablaufs, eine neue Klasse ausfuehren. Dazu habe ich folgenden Quellcode:
Code:
File file=File.createTempFile("Jav",".java",new File(System.getProperty("user.dir")));
file.deleteOnExit();
String filename=file.getName();
String classname=filename.substring(0,filename.length()-5);
ausgabeDatei = new PrintWriter (new FileOutputStream(file));
ausgabeDatei.println(//HIER KOMMT DER TEXT DER KLASSE); ausgabeDatei.flush();
ausgabeDatei.close();
//Main javac= new Main();
String[] args =new String[]{"-d",System.getProperty("user.dir"),filename};
int status =Main.compile(args);
switch(status)
{
case 0:
new File(file.getParent(),classname + ".class").deleteOnExit();
try
{
Class clazz=Class.forName(classname);
Method main =clazz.getMethod("main",new Class[]{String[].class});
main.invoke(null,new Object[]{new String[0]});
}catch(InvocationTargetException ex)
{
System.out.println("Exception in main "+ ex.getTargetException());
ex.getTargetException().printStackTrace();
}catch(Exception ex)
{
System.out.println(ex.toString());
}
break;
case 1: System.out.println("Compile status: ERROR");break;
case 2: System.out.println("Compile status: CMDERR");break;
case 3: System.out.println("Compile status: SYSERR");break;
case 4: System.out.println("Compile status: ABNORMAL");break;
default: System.out.println("Compile status: Unknown exit status");
}
Beim ausfuehren kommt nun folgende Fehlermeldung:
"java.lang.UnsupportedClassVersionError: com/sun/tools/javac/Main (Unsupported major.minor version 49.0)"
Was stimmt da nicht?
Die compile()-Methode sollte ich laut Compiler statisch aufrufen, obwohl ich im Netz immer nur die nicht statische Variante gefunden habe.
Wer kann mir helfen?
tschau
Antje