在classpath grails war / tomcat上找不到文件

时间:2011-08-09 14:34:09

标签: file tomcat grails classpath

我在grails-app / conf包中放了一个名为size_config.xml的文件。在构建war之后,解压缩文件将显示在具有预期名称的WEB-INF / classes中。但是,当我尝试在我的应用程序中引用该文件时,它声称找不到该文件。我已经尝试过所有我认为在尝试引用时合乎逻辑的组合,包括:

new File("WEB-INF/classes/size_config.xml")
new File("classes/size_config.xml")
new File("size_config.xml")
new File("grails-app/conf/size_config.xml")

这些似乎都不起作用。当我运行本地集成测试时,我使用“grails-app / conf / size_config.xml”,它找到文件就好了。由于文件打包得很好,我假设它不是部署配置问题,而是一些我未能看到的小项目。想法?

2 个答案:

答案 0 :(得分:3)

试试这个:

def servletContext = org.codehaus.groovy.grails.web.context.ServletContextHolder.servletContext 
def file = servletContext.getResource("/WEB-INF/classes/size_config.xml")

答案 1 :(得分:0)

您正在尝试使用File将类路径资源视为本地磁盘文件系统路径,同时依赖于无法从应用程序内部控制的默认工作目录。这个不对。您需要将其作为类路径资源获取。默认情况下,/WEB-INF/classes由类路径覆盖。所以你只需要从类路径中获取"size_config.xml"

ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
InputStream sizeConfig = classLoader.getResourceAsStream("size_config.xml");
// ...