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 odpowiedziUż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 :)