【问题标题】:How do I get the path of a resource when using Maven?使用 Maven 时如何获取资源的路径?
【发布时间】:2014-05-21 23:01:23
【问题描述】:

这是我尝试过的:

String myPath = myStaticClass.class.getResource("en-us").getPath(); 
// returns C:/Users/Charles/Workspace/ProjectName/target/classes/

我的资源在C:/Users/Charles/Workspace/ProjectName/src/main/resources

有人知道为什么会这样吗?

编辑:
我想我应该提到该路径正在库中用于加载资源,但失败了。

【问题讨论】:

  • 我认为这是设计使然。您想在这里解决什么具体问题?
  • 对不起,我想我应该提到的。当我给它路径时,我的程序无法加载我的资源。

标签: java maven maven-2


【解决方案1】:

当您使用 maven 构建项目时,这是放置编译代码的位置。作为构建过程的一部分,您的资源将被复制到 target/classes 文件夹。

如果您随后将应用程序部署到另一个位置,您会发现您的代码将返回资源的新路径。

编辑

根据您的评论,尝试使用以下内容加载您的资源:

InputStream resourceStream = myStaticClass.class.getClassLoader().getResourceAsStream("en-us");

这使用当前类的类加载器来定位并向您的资源提供 InputStream。

【讨论】:

    【解决方案2】:

    当您运行mvn compile 时,其中一个步骤是将您的资源目录复制到目标/类目录。现在通常如果您调用myStaticClass.class.getResource,您传入的路径将以目标/类作为根。所以假设你在 src/main/resources/my.file.txt 有一个文件,你可以通过调用 myStaticClass.class.getResource("/my.file.txt");

    您可能忘记的是那里的“/”。如果没有那个“/”,它将看起来与您的班级目录相关。

    或者,您可以这样做:ClassLoader.getSystemClassLoader().getResource("my.file.txt").getPath()。注意缺少斜线。

    【讨论】:

      【解决方案3】:

      你问为什么会这样,你说你想加载资源。

      “为什么”:参见其他帖子。没有理由在这里复制它们。

      “如何”:以下代码显示了如何加载资源。假设它们在一个名为“your.resources”的文件中,并且该文件位于类路径中;根据你的帖子,是的。

      import java.io.IOException;
      import java.util.Properties;
      
      public class Test {
      
          public Test() throws IOException
          {
              final Properties properties = new Properties();
              properties.load(this.getClass().getResourceAsStream("your.resources"));
              System.out.println(properties);
          }
          public static void main(String[] args) throws IOException  {
              new Test();
          }
      }
      

      请注意,您无需提供资源的完整路径。只要它们在类路径中,就会找到它们。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-12-09
        • 2019-03-12
        • 2021-04-24
        • 2020-09-09
        • 1970-01-01
        • 2011-09-12
        • 2012-05-13
        • 1970-01-01
        相关资源
        最近更新 更多