Jaxp问题?使用gradle找不到org.apache.xerces.jaxp.DocumentBuilderFactoryImpl

时间:2011-05-14 03:52:09

标签: 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的工作原理并不了解。

感谢您的帮助

2 个答案:

答案 0 :(得分: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
}

答案 1 :(得分:0)

请尝试使用getClass().getClassLoader()Class.forName()根本不应该使用;当从Java调用时它已经知道了问题,并且从Groovy调用时完全不可靠(你通常会得到Groovy库的类加载器而不是调用者的类加载器)。