Osadzanie kompilatora w projekcie opartym o SBT

0

Chcę napisać program w Scali, a jego częścią ma być np generator danych z kodu podanego w jakimś TextArea - ogólnie chodzi mi o kompilację kodu w locie, potem jego wykonania, pobrania instancji jakiejś ustalonej klasy generującej dane i odpytywaniem jej o kolejne dane.

Problemem jest zrobienie tej funkcjonalności (czyli osadzenie kompilatora w projekcie) tak, aby kompilacja przebiegała bezproblemowo zarówno jeśli odpalę program spod FSC (czy tam scalac) jak i pod SBT komendą 'run'.

Próbowałem na kilka sposobów, tzn wklejałem skrawki kodu znalezione w blogach na necie, ale problem dalej nierozwiązany. Aktualnie kompilacja przebiega pomyślnie jeśli odpalę program spod FSC (względnie scalac też pewnie by zadziałał), ale komendą 'sbt run' już nie zadziała.

Z tego co wyczytałem np na https://github.com/harrah/xsbt/wiki/FAQ (dział How do I use the Scala interpreter in my code?) problem leży w classloaderach, ale nie jestem specem od classloaderów i niedługo szału chyba od nich dostanę.

Jak na razie projekt składa się z dwóch plików:

W obecnej postaci, przy odpalaniu komendy 'sbt run' wyświetlany jest następujący komunikat:
[error] (run-main) scala.tools.nsc.FatalError: object List does not have a member apply
w momencie kompilacji, tzn linijka 55. kodu źródłowego.

Ma ktoś pomysł jak to ogarnąć?

1

Udało mi się jakoś rozwiązać sytuację. Kompilacja już mi działa zarówno spod SBT jak i spod FSC w IntelliJ IDEA.

Rozwiązaniem, nie mam pewności czy poprawnym, było dodanie classloadera z wątku wywołującego jako parenta do classloadera ładującego wygenerowane klasy.

Oto aktualna wersja kodu: http://4programmers.net/Pastebin/1766

1 użytkowników online, w tym zalogowanych: 0, gości: 1