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

Java 在Maven项目中放置静态文件的位置,java,file,maven,Java,File,Maven,我创建了一个简单的Maven项目,没有原型,一切都很好。然后我在main/resources目录下添加了一个CVA.pmml文件。之后,我想读取该文件,但得到FileNotFoundException。我尝试了以下方法: 方法1: InputStream is = BundleTest.class.getResourceAsStream("CVA.pmml"); InputStream is = BundleTest.class.getResourceAsStream("CVA.pm

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

方法1:

InputStream is = BundleTest.class.getResourceAsStream("CVA.pmml");
InputStream is = BundleTest.class.getResourceAsStream("CVA.pmml");
方法2:

InputStream is = BundleTest.class.getResourceAsStream("resources/CVA.pmml");
InputStream is = BundleTest.class.getResourceAsStream("resources/CVA.pmml");
方法3:

InputStream is = new FileInputStream("CVA.pmml");
InputStream is = new FileInputStream("CVA.pmml");
方法4:

InputStream is = new FileInputStream("resources/CVA.pmml");
InputStream is = new FileInputStream("resources/CVA.pmml");
它们都不起作用。有什么建议吗

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


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

方法1:

InputStream is = BundleTest.class.getResourceAsStream("CVA.pmml");
InputStream is = BundleTest.class.getResourceAsStream("CVA.pmml");
这将在BundleTest类所在的包中查找CVA.pmml资源。但是CVA.pmml在根包中,而BundleTest不在根包中

方法2:

InputStream is = BundleTest.class.getResourceAsStream("resources/CVA.pmml");
InputStream is = BundleTest.class.getResourceAsStream("resources/CVA.pmml");
这将在BundleTest类包下的resources包中查找它。但它在根包中

方法3:

InputStream is = new FileInputStream("CVA.pmml");
InputStream is = new FileInputStream("CVA.pmml");
这将在文件系统中查看它,在执行java命令的目录中。但它在类路径中,嵌入在jar中(或类路径目录中)

方法4:

InputStream is = new FileInputStream("resources/CVA.pmml");
InputStream is = new FileInputStream("resources/CVA.pmml");
这将在文件系统中,在“resources”目录中,在执行java命令的目录下查找它。但它在类路径中,嵌入在jar中(或类路径目录中)

正确的方法是

InputStream is = BundleTest.class.getResourceAsStream("/CVA.pmml");
(注意前面的斜杠)


你能给我们提供工作区的屏幕截图吗?只想查看文件夹结构可能重复您可以尝试使用InputStream is=new FileInputStream(“./CVA.pmml”);作品谢谢。