IOException从类路径资源解析XML文档

时间:2014-01-20 08:05:24

标签: spring gradle classpath

我正在尝试在gradle构建脚本中使用外部jar中的类。类使用spring framewrork,它在类路径中查找配置文件。

public class EntryPoint {

public DependencyXmlParseAction get() {
try {
    ClassPathXmlApplicationContext ctx = new ClassPathXmlApplicationContext("folder/appName-applicationContext.xml");
} catch (Exception e) {
    throw new RuntimeException(e);
}
}

我收到此错误:

org.springframework.beans.factory.BeanDefinitionStoreException: IOException parsing XML document from class path resource [folder/appName-applicationContext.xml]; nested exception is java.io.FileNotFoundException: class path resource [folder/appName-applicationContext.xml] cannot be opened because it does not exist

如果我尝试使用参数执行构造函数,我会得到同样的错误:

 new ClassPathXmlApplicationContext("appName-applicationContext.xml") 

和appName-applicationContext.xml位于jar存档的根目录。

因此它告诉文件不在类路径上。但jar包含该文件的确切位置。 所以我认为这与我用于从jar加载类的gradle脚本类路径和类加载器有关。

第一个问题:如何打印gradle脚本类路径?

我以下一种方式在脚本中加载jar:

repositories {
    mavenLocal()
    mavenCentral()
}

configurations {
    buildScriptJar
}

dependencies {    
    buildScriptJar "package:DependencyParser:0.1.0__0-0_0-0_0-0_0-0"    
}

URLClassLoader loader = GroovyObject.class.classLoader
configurations.buildScriptJar.each {File file ->
    loader.addURL(file.toURL())
    System.out.println("");
    System.out.println(" Loaded file is " + file.getPath());
}


Class entryPointClass = loader.loadClass('folder.EntryPoint')

类从加载器成功加载,但在此之后搜索配置文件失败。

如果我尝试以其他方式加载类,我会收到其他错误:尽管它们位于gradle缓存中,但未找到可加载jar的依赖项。

Gradle版本是1.10

0 个答案:

没有答案