Kompiluj kod całkowicie w pamięci za pomocą javax.tools.JavaCompiler [duplikat]

To pytanie ma już tutaj odpowiedź:

Jak dynamicznie kompilować i ładować zewnętrzne klasy Java? [duplikować] 2 odpowiedzi

Używam JavaCompilera z pakietu javax.tools (JDK 1.7), aby skompilować niektóre rzeczy w locie, w ten sposób:

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

Działa, ale chciałbym to zrobić w pamięci (np. Przekazać ciąg znaków z kodem, a nie plik źródłowy i przywrócić kod bajtowy, a nie plik .class). Odkryłem, że przedłużamInputStream iOutputStream parametry nie są przydatne, ponieważ prawdopodobnie są takie same jak w konsoli. Czy wiesz, jak działa metoda run? A może znasz potwierdzony sposób, aby to zrobić za pomocągetTask() metoda? (rozszerzenie Menedżera plików wygląda na łatwe, ale nie jest to takie proste :)

questionAnswers(7)

yourAnswerToTheQuestion