gpt4 book ai didi

java - Maven项目中的静态文件放在哪里

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:35:27 24 4
gpt4 key购买 nike

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

方法一:

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

方法二:

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

方法三:

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

方法四:

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

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

这是项目结构的截图:

Project Structure

最佳答案

Method 1:

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

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

Method 2:

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

那会去BundleTest类的包下的资源包里找。但它在根包中。

Method 3:

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

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

Method 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");

关于java - Maven项目中的静态文件放在哪里,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43672502/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com