Проблема
Глядя на исходный код , это исключение выдается, когда имя предоставленного ClassLoader (или его суперкласса) не равно groovy.lang.GroovyClassLoader
или org.codehaus.groovy.tools.RootLoader
. Т.е. целевой загрузчик классов должен быть экземпляром вышеупомянутых классов (немного ограничивающий ИМХО).
Решение
В настоящее время я не знаю, как настроить определенный загрузчик классов, используя аннотации @Grape
/ @Grab
/ @GrabConfig
. Наиболее близким было бы использовать @GrabConfig(systemClassLoader=true)
и убедиться, что системный загрузчик классов является экземпляром одного из вышеупомянутых классов ClassLoader.
Если кто-нибудь знает, пожалуйста, дайте мне знать (и я обновлю этот ответ).
Обходной путь
Следующий код программно загрузит ваш Grapes и загрузит его в прилагаемый GroovyClassLoader (правда, не совсем то, что вы хотите).
def loadGrapes(){
ClassLoader classLoader = new groovy.lang.GroovyClassLoader()
Map[] grapez = [[group : 'org.ccil.cowan.tagsoup', module : 'tagsoup', version : '1.2']]
Grape.grab(classLoader: classLoader, grapez)
println "Class: " + classLoader.loadClass('org.ccil.cowan.tagsoup.jaxp.SAXParserImpl')
}