Kompilieren Sie den Code vollständig im Speicher mit javax.tools.JavaCompiler [duplizieren]

Diese Frage hat hier bereits eine Antwort:

Wie lassen sich externe Java-Klassen dynamisch kompilieren und laden? [Duplikat] 2 Antworten

Ich verwende den JavaCompiler aus dem Paket javax.tools (JDK 1.7), um einige Dinge im laufenden Betrieb zu kompilieren:

compiler.run(null, null, "-cp", paths, "path/to/my/file.java");

Es funktioniert, aber ich möchte alles im Speicher tun (z. B. eine Zeichenfolge mit dem Code, nicht der Quelldatei, übergeben und den Bytecode zurückerhalten, nicht eine .class-Datei). Ich fand die Erweiterung derInputStream undOutputStream parameter nützen nichts, da sie wahrscheinlich genauso sind wie in der konsole. Kennen Sie eine Methode, mit der die run-Methode so funktioniert? Oder kennen Sie einen bestätigten Weg, dies mit dem zu tun?getTask() Methode? (Erweiterung des FileManager sieht einfach aus, ist aber nicht so einfach :)

Antworten auf die Frage(7)

Ihre Antwort auf die Frage