# Dynamisch Klassen erzeugen



## Schnacki (28. Mai 2007)

HI, habe nochmal eine Frage:

Ich versuche im Moment dynamisch Klassen zu erzeugen, und da habe ich mal eine Frage:

Erst einmal mein Code:

```
import java.lang.reflect.*;


public class Test extends ClassLoader {

	String code="class hallo { public static void main(String[] args) { }}";
	byte[] bytes;
	public Test() {
		bytes= code.getBytes();
		
		try {
			Class p = defineClass("hallo.class", bytes,0,bytes.length);
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
	public static void main(String[] args) {
		new Test();
	}

}
```

Aber wenn ich das Programm ausführe kommt immer diese Fehlermeldung:

```
Exception in thread "main" java.lang.ClassFormatError: Incompatible magic value 1668047219 in class file hallo/class
	at java.lang.ClassLoader.defineClass1(Native Method)
	at java.lang.ClassLoader.defineClass(ClassLoader.java:620)
	at java.lang.ClassLoader.defineClass(ClassLoader.java:465)
	at Test.<init>(Test.java:12)
	at Test.main(Test.java:19)
```

Wisst ihr was ich an meinem Code ändern muss?


----------



## Thomas Darimont (28. Mai 2007)

Hallo,

Das ist "etwas"  zu einfach gedacht ;-) Das byte[] das du an define Class übergeben musst sollte natürlich auch JVM Bytecode enthalten ;-)

schau mal hier:
http://www.tutorials.de/forum/java/...ern-ohne-selbst-bytecode-zu-manipulieren.html
http://www.tutorials.de/forum/java/188990-jboss-javaassist.html
http://www.tutorials.de/forum/java/219034-neue-klassen-zur-laufzeit-erzeugen-nicht-instanzen.html

Gruß Tom


----------

