当前位置: 首页 > 知识库问答 >
问题:

getResourceAsStream在win10上返回null(如果在gradle plugin任务中使用)

喻珂
2023-03-14

我需要从gradle plugin jar复制一个文件到一个项目的根,该项目应用插件作为gradle任务的一部分。

我在gradle plugin jar中有一个文件放在src/main/resources/data/file

String filename = "data" + File.separator + "file";
final InputStream stream= classLoader.getResourceAsStream(fileName);
final Path filePath = new File(filename).toPath();
new File("data").mkdirs();
try {
    Files.copy(stream, filePath , StandardCopyOption.REPLACE_EXISTING);
} catch (IOException e) {
    throw new PluginApplicationException("Failed to apply plugin", e);
}

我尝试使用不同的方法来获取类加载器,但在windows和Linux上都是VisitableURLClassLoader。有人知道为什么它在Windows上是空的吗?

共有1个答案

蒲魁
2023-03-14

不要使用file.separator。对于资源,它总是/

 类似资料:
  • 我有以下问题 返回null,但是 返回InputStream,并且两个文件都在此文件夹中。有什么不对劲? 我使用的是libgdx-0.9.6

  • 问题内容: 我的项目目录结构(在Eclipse中): 在中,我有以下代码: 运行此命令时,将获得以下控制台输出: 为什么? 我放置在错误的位置了吗?我是否使用了ClassLoader API错误?还有吗 提前致谢! 问题答案: 如果在同一包装中使用 您拥有的方式 它在类路径的根目录中查找文件。你可以用 搜索规则在的javadoc和的javadoc中进行了说明。

  • 问题内容: 不知道这怎么可能。我重新阅读了getResourceAsStream,它始终返回null。 在Finder中(使用OS X和Eclipse),在test.java的旁边是test.xml 我可以在TextWrangler中打开它,并查看其中是否存在数据。 如果有什么不同,这是Junit测试。我去查看了系统上现有的Junit测试,并以与工作示例完全相同的方式来使用它(如文件所在的位置和代

  • 问题内容: 我正在从Java项目的已编译JAR中的包中加载文本文件。相关目录结构如下: 我的代码通过调用返回来加载文件。 无论我使用什么,都将始终打印输出。我不确定为什么上面的方法行不通,所以我也尝试了: 这些都不起作用。我 读 了许多 问题至今的话题,但他们都不是有帮助的-通常情况下,他们只是说,使用根路径,这我已经在做负载文件。那,或者只是从当前目录加载文件(只是),我也尝试过。该文件将使用适

  • 我知道同样的问题已经被问了很多次,但是通过已经发布的所有答案,我找不到解决方案。 首先,以下是我在项目中遇到问题后用来测试该问题的代码: 因此,根据标题,这些对getResourceAsStream()的调用都返回null,但只有在执行jar文件时,在IDE(Netbean 8.0.2)内启动时,它们都返回正确的流(单独测试不使用这段代码),我可以使用它。 所以我现在真的很困惑,我在使用netbe

  • 问题内容: 我在Java Web应用程序中具有以下结构: 在中WS.java,我在Web方法中使用以下代码: 但是它总是返回null。我需要读取该文件,并且我读到如果将文件放入其中,则可以使用进行访问,但是该方法始终返回null。 对我可能做错的任何想法? 它正在工作,但是当我Clean and Build在Project上执行了a之后,它突然停止工作了 问题答案: 据我所知,该文件必须正确地放置