W tle eksperymentuję z pisaniem parsera DSL, używając tego wspaniałego example. Niestety, kiedy dostosować tę linię do użytku we własnej aplikacji:Jak utworzyć obiekt GroovyShell za pomocą ścieżki klas aplikacji kontekstowej
Script dslScript = new GroovyShell().parse(dsl.text)
mam klasy rozwiązywaniu błędów w czasie wykonywania, jak moje pliki domen DSL mieć kod, który odwołuje się do innych klas zewnętrznych. Aplikacja kontekstowa ma dostęp do tych klas, ale nie wiem, jak udostępnić je do nowego obiektu GroovyShell, lub alternatywnie w jakiś sposób użyć środowiska wykonawczego aplikacji kontekstowej do przeanalizowania pliku.
Tak. Właśnie doszło do podobnego rozwiązania, ponieważ w Grails: Skrypt dslScript = nowy GroovyShell (grailsApplication.classLoader) .parse (dsl.text) –
Czy to rozwiązuje problemy z PermSpace, gdzie to zostawia informacje o klasie tam i można uruchomić ostatecznie z PermSpace? Zobacz tutaj: http://stackoverflow.com/questions/24169976/understanding-groovy-grails-classloader-leak https://issues.apache.org/jira/browse/GROOVY-2875 Tak więc zastanawiam się, czy to może być polecany do aplikacji serwerowych, czy nie, –
Minęło trochę czasu, ale wyobrażam sobie, że to wciąż kompilacja nowej klasy. Jeśli tak jest, efekt będzie podobny do 'parseClass' – clmarquart