我在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”,它找到文件就好了。由于文件打包得很好,我假设它不是部署配置问题,而是一些我未能看到的小项目。想法?
答案 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");
// ...