从maven项目资源文件夹(src / main / resources)加载excel(.xlsx / .xls)文件

在这里,我正试图从一个maven项目的资源文件夹(src / main / resources)加载一个excel文件。

文件夹结构

MyWebApp |______src/main/java | |____Test.java | |______src/main/resources | |______test | |___hello.properties | |___template.xlsx |______target |___MyWebApp |____WEB_INF |___classes |__test |__hello.properties |__template.xlsx 

我的方法

 //loading excel file String resource = "/test/template.xlsx"; System.out.println(this.getClass().getResource(resource) == null); // prints true //loading properties file String resource = "/test/hello.properties"; System.out.println(this.getClass().getResource(resource) == null); //prints false //I have also tried below methods this.getClass().getClassLoader().getResourceAsStream(resource); //null new ClassPathResource(resource).getInputStream(); //null 

做了一些Googlesearch后,我才知道, maven过滤二进制内容 。 为了解决这个问题,我修改了我的pom.xml文件,允许.xlsx.xls文件的扩展名不被这个帮助过滤掉。

的pom.xml

 <configuration> <outputDirectory>${project.build.directory}/${project.build.finalName}/WEB-INF/classes</outputDirectory> <resources> <resource> <directory>${basedir}/src/main/resources</directory> <includes> <include>**/*.xlsx</include> <include>**/*.xls</include> </includes> </resource> </resources> </configuration> 

我能够加载属性文件,但我无法通过使用上述方法加载Excel文件。 从我身边我参考了以下两个链接( Rererence-1 , Reference-2 ),但没有成功。 请帮助我,如果你对这个问题有一些想法/想法。

在你链接到的maven文档页面里有这样的说法:

如果你有两个文本文件和二进制文件作为资源,build议有两个分开的文件夹 。 一个文件夹src / main / resources(缺省值)用于未筛选的资源,另一个文件夹src / main / resources-filtered用于筛选的资源。

所以你应该把属性和xlsx文件放在不同的目录下。

还有一个关于从过滤中排除二进制文件的信息 :

 <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-resources-plugin</artifactId> <version>3.0.0</version> <configuration> ... <nonFilteredFileExtensions> <nonFilteredFileExtension>pdf</nonFilteredFileExtension> <nonFilteredFileExtension>swf</nonFilteredFileExtension> </nonFilteredFileExtensions> ... </configuration> </plugin>