在Maven项目中放置静态文件的位置

我创建了一个没有原型的简单Maven项目,一切都很好。 然后我在main/resources目录下添加了一个CVA.pmml文件。 之后,我想读取文件,但得到FileNotFoundException 。 我尝试了以下方法:

方法1:

 InputStream is = BundleTest.class.getResourceAsStream("CVA.pmml"); 

方法2:

 InputStream is = BundleTest.class.getResourceAsStream("resources/CVA.pmml"); 

方法3:

 InputStream is = new FileInputStream("CVA.pmml"); 

方法4:

 InputStream is = new FileInputStream("resources/CVA.pmml"); 

它们都不起作用。 有什么建议吗?

以下是项目结构的屏幕截图:

项目结构

方法1:

 InputStream is = BundleTest.class.getResourceAsStream("CVA.pmml"); 

这将在与BundleTest类相同的包中查找CVA.pmml资源。 但是CVA.pmml在根包中,而BundleTest则不在。

方法2:

 InputStream is = BundleTest.class.getResourceAsStream("resources/CVA.pmml"); 

这将在BundleTest类的包下的资源包中查找它。 但它在根包中。

方法3:

 InputStream is = new FileInputStream("CVA.pmml"); 

那将在文件系统上查看它,在您执行java命令的目录中。 但是它位于类路径中,嵌入在jar(或类路径目录)中

方法4:

 InputStream is = new FileInputStream("resources/CVA.pmml"); 

那将在文件系统的目录`resources中查看执行java命令的目录下。 但是它位于类路径中,嵌入在jar(或类路径目录)中

正确的方法是

 InputStream is = BundleTest.class.getResourceAsStream("/CVA.pmml"); 

(注意领先的斜线)

要么

 InputStream is = BundleTest.class.getClassLoader().getResourceAsStream("CVA.pmml"); 

在resources文件夹中创建名为static的文件夹,并将文件放在那里。 并像这样“/CVA.pmml”访问它