UnsupportedClassVersionError

Status
Nicht offen für weitere Antworten.
A

Antje

Gast
Hallo,
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 ich daraus entnehmen kann, ist, dass was mit der Gross-/Kleinschreibung nicht stimmt, aber was???
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
 

L-ectron-X

Gesperrter Benutzer
Ich glaube eher, dass ein Versionskonflikt zwischen Compiler und Interpreter besteht.
Also kompiliert mit 1.5 und interpretiert mit 1.4.x.
 
G

Guest

Gast
das kann sein. Ich habe mir die tools.jar von der neuesten JDK geholt.
 
G

Guest

Gast
Na toll, ich habe meinen Interpreter jetzt auch auf 1.5 umgestellt, nun kommen aber einige andere neue Fehler.
Die show()-Methode fuer einen Dialog ist jetzt deprecated, und meine Konsolenausgabe in einer JTextArea ist nun auch fehlerhaft:
Code:
//Klasse zum Umleiten des StandardAusgabeStream
	class MeinPrintStream extends PrintStream 
	{
		public MeinPrintStream(JTextArea anzeige)
		{
			super(new MeinOutputStream(anzeige));
		}
	}
	
	class MeinOutputStream extends OutputStream
	{
		private JTextArea anzeigeText;
		
		public MeinOutputStream(JTextArea anzeige)
		{
			this.anzeigeText=anzeige;
		}
		
		public void write(int b)
		{
			char c=(char)b;
			anzeigeText.append(String.valueOf(c));
		}
	}
Fehler:
Code:
The return type is incompatible with Appendable.append(CharSequence), PrintStream.append(CharSequence), PrintStream.append(CharSequence)
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen


Oben