【问题标题】:Loading files from Resource folder using java jar使用java jar从资源文件夹加载文件
【发布时间】:2018-06-03 16:20:16
【问题描述】:

我在 maven 项目的 src/main/resource 文件夹中有 download.sh 文件,我正在通过下面的代码阅读它

 ClassLoader classLoader = getClass().getClassLoader();
 File file = new File(classLoader.getResource("download.sh").getFile());

当我将其作为独立应用程序运行时,文件正在读取。

如果我使用 jar ex 将其作为应用程序运行:-

java -jar runScript.jar SCHEMA_NAME

/Users/IdeaProjects/RunScript/target/file:/Users/IdeaProjects/RunScript/target/RunScripts.jar!/download.sh": error=2, 没有这样的文件或目录

任何人都可以帮助我在使用 jar 执行时从资源中读取文件

【问题讨论】:

  • 你是如何打包你的jar的?
  • 通过运行 mvn clean install @Kirill Simonov
  • 你解决了吗?

标签: java maven jar maven-3


【解决方案1】:

资源是不是文件。您可以获取它们的 URL 或输入流,但您无法将 JAR 文件中的资源转换为磁盘上的文件,以便您可以与 File 一起使用。没有解压JAR文件,也就是。

【讨论】:

    【解决方案2】:

    我认为当您尝试读取文件时会发生此错误。这是因为 jar 中的资源不是文件而是流。所以你应该使用

    getClass().getResourceAsStream("download.sh");
    

    然后读取该流,例如:

    InputStream resourceStream = getClass().getResourceAsStream("download.sh")
    BufferedReader br = new BufferedReader(new InputStreamReader(resourceStream));
    String line;
    while ((line = br.readLine()) != null) {
        // do something
        System.out.println(line);
    }
    

    【讨论】:

      【解决方案3】:

      我认为您没有将资源与 jar 一起打包。请使用

      验证您的 jar 是否包含资源文件 (download.sh)
      jar -tvf <yourfile.jar> | grep -i download 
      

      【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-03-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-26
      • 2014-10-11
      • 1970-01-01
      • 2011-01-31
      相关资源
      最近更新 更多