在Maven项目

时间:2017-04-28 05:20:40

标签: java file maven

我创建了一个没有原型的简单Maven项目,一切都很好。然后我在CVA.pmml目录下添加了main/resources文件。之后,我想阅读该文件,但获得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");

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

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

Project Structure

2 个答案:

答案 0 :(得分:5)

  

方法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");

答案 1 :(得分:-2)

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