Aktywne Wpisy

drobne_na_taryfe +29
plusy posiadania hodowli prosionków w domu:
- śmiesznie tuptają i ruszają czułkami i machają pupcią gdy zbyt mocno się zmoczą
- ich karma dosłownie rośnie na drzewach bo jedzą drewno i liście
- można im konstruować ładne terraria z rzeczy znalezionych na spierdotripach
minusy posiadania hodowli prosionków w domu:
- zbieranie przez pół soboty kilkuset rozlazłych po mieszkaniu stawonogów bo masz zdolności motoryczne dwulatka
- śmiesznie tuptają i ruszają czułkami i machają pupcią gdy zbyt mocno się zmoczą
- ich karma dosłownie rośnie na drzewach bo jedzą drewno i liście
- można im konstruować ładne terraria z rzeczy znalezionych na spierdotripach
minusy posiadania hodowli prosionków w domu:
- zbieranie przez pół soboty kilkuset rozlazłych po mieszkaniu stawonogów bo masz zdolności motoryczne dwulatka

PiersKurczaka +12
I czego wy nie śpicie jeszcze





Potrzebuję korzystać z klas, które nie znajdują się w projekcie - póki co program uruchamiany jest w Eclipse, finalnie będzie też potrzeba rekompilacji klasy main i odpalania programu z CMD. Te klasy, które mają zostać doczytane to również Groovy, a ścieżki do nich MUSZĄ być zapisane jako zmienne/stałe w metodzie .main() programu. Bezpośrednio w tej metodzie również będą te doczytane klasy wykorzystywane.
Sam program jak i doczytywane klasy to oddzielne byty ale program musi te doczytane klasy przekompilować. Ba, wcześniej musi je nawet tymczasowo zmodyfikować (po zakończeniu działania programu klasa musi być identyczna jak przed uruchomieniem). Ten program ma za zadanie symulować działanie pewnej aplikacji, która (w uproszczeniu) korzysta z tych klas, które ja potrzebuję doczytać. W skrócie mój program ma służyć do testowania tychże klas poprzez pisanie kodu/testów w mojej metodzie .main(). Z tym, że w tych klasach brakuje niezbędnych pól. Nawet po dołączeniu takiej klasy do projektu, program wysypuje się w jej konstruktorze - No such property: X for class: Y
Normalnie w aplikacji konstruktor wywoływany jest tak samo. Nie wiem jak to jest zrobione, że uruchomiona aplikacja te brakujące pola widzi i obiekt tej klasy działa na nich. Trzeba jeszcze dodać, że te brakujące pola w oryginalnej aplikacji są innej klasy niż te, które ja próbuję przekazać do konstruktora (ale to nie z tego powodu się sypie - tych pól w klasie w ogóle nie ma). Te obiekty które przekazuję do konstruktora są mojej własnej klasy i mają za zadanie symulować działanie oryginalnych. Po dodaniu do klasy odpowiedniego pola które jest typu mojej klasy, program normalnie działa. Poniżej fragment z konstruktorem:
https://pastebin.com/aQRpFnYf
Nie wiem jak to rozwiązać. Mógłbym to nawet i zrobić "głupio", czyli pobrać zawartość z plików .groovy do Stringów i po chamsku do tych Stringów pododawać co trzeba. Tylko jak z tych Stringów później te klasy doczytać żebym mógł z nich korzystać tak jakby były częścią programu (tzn. tworzyć normalnie ich obiekty, korzystać z ich metod statycznych itd.) ?
Da się w ogóle coś takiego zrobić?
#java #groovy
Ze Stringa w runtime zrobić klasę i jej użyć?
1. Da się.
2. Chyba by mnie piorun musiał strzelić trzy razy z rzędu, żebym się na takie coś zgodził.
@sorhu: Ale będzie się dało z niej korzystać tak samo jak gdyby istniała w bin? Czego mam szukać w dokumentacji? groovy.lang.GroovyClassLoader? Podpowiedz coś.
Czytałeś punkt 2? Nie idź tą drogą.
Nie wiem jak. Wybacz, ale całe te wymagania "śmierdzą". Dlaczego w ogóle ktoś miałby chcieć zrobić coś tak dziwnego? Może pokaż jakiś szerszy kontekst. Być może da się to zrobić normalnie.
@ppawel: Kiedyś próbowałem kombinować ze ScriptEngine ale do niczego sensownego nie doszedłem. Jedyne co udało mi się przez to uruchomić to JS.