#gradle #jaxp
#gradle #jaxp
Вопрос:
У меня возникли проблемы с загрузкой класса в скрипт gradle. Когда я запускаю этот код:
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath( group:"xerces", name:'xercesImpl', version:'2.9.1')
}
}
task hello {
doLast {
println 'Hello world!'
Class testClass = Class.forName("org.apache.xerces.jaxp.DocumentBuilderFactoryImpl")
assert testClass: "org.apache.xerces.jaxp.DocumentBuilderFactoryImpl not found"
println "found"
}
}
Я получаю это, когда запускаю «gradle hello»:
java.lang.ClassNotFoundException: org.apache.xerces.jaxp.DocumentBuilderFactoryImpl»
Я подозреваю, что проблемы с реализацией Jaxp, но мало что знаю о том, как работает jaxp.
Спасибо за любую помощь
Ответ №1:
Будет ли достаточно чего-то подобного?
import org.apache.xerces.jaxp.DocumentBuilderFactoryImpl;
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath group:"xerces", name:'xercesImpl', version:'2.9.1'
}
}
task hello {
println 'Hello world!'
DocumentBuilderFactoryImpl obj = new DocumentBuilderFactoryImpl()
// do something with obj
}
Ответ №2:
Попробуйте getClass().getClassLoader()
вместо этого. Class.forName()
вообще не следует использовать; у него известные проблемы при вызове из Java и он абсолютно ненадежен при вызове из Groovy (обычно вы получаете загрузчик классов библиотеки Groovy вместо загрузчика классов вызывающего).