Hi, brauche bitte hilfe bei meinem Programm:
Ich will aus einem Programm eine Klasse erstellen und diese dann mittels Reflection verwenden.
Dafür habe ich in Eclipse die JDK 1.6 Libary eingebunden.
Mit folgendem Code wird im Ordner <...>/lib dann die .class Datei erstellt und ausgeführt.
Das funktioniert, wenn aus Eclipse gestartet, einwandfrei.
Frage 1:
Wenn ich jetzt eine Programm.jar Datei erstelle werden die ".class" files im Programm.jar/lib Ordner gespeichert nehme ich an, richtig?
Frage 2:
Wenn ich den Code aus meinem Programm.jar File ausführe, bekomme ich während des Compilierens der neuen Klasse mit diesem Programm,einen NullPointer. Hängt dass damit zusammen dass am System nur die Java JRE (1.7) gesetzt ist?
Ich hätte gerne dass mein Java unabhängig von einem JDK auch mit einer JRE läuft. Was habe ich hier für Möglichkeiten?
Ich will aus einem Programm eine Klasse erstellen und diese dann mittels Reflection verwenden.
Dafür habe ich in Eclipse die JDK 1.6 Libary eingebunden.
Mit folgendem Code wird im Ordner <...>/lib dann die .class Datei erstellt und ausgeführt.
Das funktioniert, wenn aus Eclipse gestartet, einwandfrei.
Java:
File fRun = new File("someFile.java");
JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();
StandardJavaFileManager fileManager = compiler.getStandardFileManager(null, null, null);
Iterable<String> options = Arrays.asList( new String[] { "-d", currentDir+"\\bin\\"} );
Iterable<? extends JavaFileObject> compUnits = fileManager.getJavaFileObjects(fRun);
Boolean compRes = compiler.getTask(null, fileManager, null, options, null, compUnits).call();
if(compRes == true){
System.out.println("Compilation has succeeded");
fileManager.close();
ClassLoader cl = Thread.currentThread().getContextClassLoader();
Class<?> compiledClass = cl.loadClass(someFile);
cRun = compiledClass;
}else{
System.out.println("Compilation error");
fileManager.close();
throw new Exception("Compilation Error");
}
Frage 1:
Wenn ich jetzt eine Programm.jar Datei erstelle werden die ".class" files im Programm.jar/lib Ordner gespeichert nehme ich an, richtig?
Frage 2:
Wenn ich den Code aus meinem Programm.jar File ausführe, bekomme ich während des Compilierens der neuen Klasse mit diesem Programm,einen NullPointer. Hängt dass damit zusammen dass am System nur die Java JRE (1.7) gesetzt ist?
Ich hätte gerne dass mein Java unabhängig von einem JDK auch mit einer JRE läuft. Was habe ich hier für Möglichkeiten?
Zuletzt bearbeitet: