0

我无法让一个类加载到 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 的工作原理。

谢谢你的帮助

4

2 回答 2

0

试试getClass().getClassLoader()吧。Class.forName()根本不应该使用;它在从 Java 调用时存在已知问题,并且在从 Groovy 调用时完全不可靠(您通常会获得 Groovy 库的类加载器而不是调用者的类加载器)。

于 2011-05-31T06:39:27.650 回答
0

这样的事情就足够了吗?

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
}
于 2011-05-16T00:27:50.583 回答