编程语言
首页 > 编程语言> > 如何从引用java项目访问静态资源(WEB-INF)文件夹中的文件?

如何从引用java项目访问静态资源(WEB-INF)文件夹中的文件?

作者:互联网

我有一个Web应用程序,其中包含我的一个应用程序服务的配置xml文件,该文件作为spring bean公开.
此外,我在同一个工作区中有一个独立的Java应用程序(它从其pom.xml引用我的Web应用程序项目),它使用Spring TestContext框架运行测试,其中一个测试检查该XML文件的配置.

但是我从独立应用程序访问此xml文件时遇到问题:

在设置测试之前,在我之前的配置中,该文件是通过ServletContext访问的,位于WEB-INF /文件夹中.但是,为了使其可以从测试项目访问,我必须将其移动到源/文件夹并使用getClassLoader().getResourceAsStream()方法加载它而不是ServletContext.但它会使编辑文件变得很麻烦,因为每次都需要重新部署应用程序.

是否可以将文件保存在WEB-INF /文件夹中,但在测试运行期间从引用项目中加载它?

附:目前它是一个带有Tomcat服务器的STS项目.

解决方法:

绝对将文件保存在WEB-INF /文件夹下,如果它应该存在的位置.

对于从命令行执行的测试类.您可以在您知道位于类路径根目录中的文件(例如application.properties文件)上使用getClassLoader().getResource().从那里你知道项目的结构以及在哪里找到WEB-INF /相对于属性文件.由于它返回一个URL,您可以使用它来确定您正在寻找的XML文件的路径.

URL url = this.getClass().getClassLoader().getResource("application.properties");
System.out.println(url.getPath());

File file = new File(url.getFile());
System.out.println(file);

// now use the Files' path to obtain references to your WEB-INF folder

希望你觉得这很有用.我不得不对你的测试类如何运行等做出假设.

看看File Class,它是可能对你有用的getPath(),getAbsolutePath()和getParent()方法.

标签:java,spring,maven,java-ee,pom-xml
来源: https://codeday.me/bug/20191009/1877119.html