【发布时间】:2020-06-02 20:39:32
【问题描述】:
我尝试遍历资源中某个文件夹中的所有文件(我自己在 Eclipse 中通过执行 new->folder 添加了这个文件夹)。无论我尝试什么,它都会在我尝试获取文件夹的行上给出一个空异常。因为我需要遍历其内容,将其作为流或某些东西不起作用。 我尝试了很多方法,但是例如这两个给了我错误:
File folder = new File(Thread.currentThread().getContextClassLoader().getResource("schematics").getPath());
这个包裹在 try catch 中也不起作用:
File folder = new File(getClass().getClassLoader().getResource("schematics").toURI());
我的文件结构(我尝试访问原理图的类是 HeavenStructureManager 的初始化程序):
编辑 这个项目是一个 minecraft 插件,由 maven 捆绑到一个 jar 中,并由 spigotmc minecraft jar 运行。他们的 api 提供了一个函数 getResource() 但它提供了一个 InputStream。因为我想动态获取对我不起作用的文件夹中的所有文件。 我解压缩了我的 jar 文件以检查原理图在哪里,它看起来像这样:
【问题讨论】:
-
您是在 Eclipse 中运行代码还是在单元测试中运行代码?当前目录也可能是项目目录。所以,应该是 src/main/resources/schematics 什么的。
-
@Serge 这是一个我的世界插件。我通过 maven 将它编译为 jar,但它是由 spigot 的 minecraft 服务器启动器运行的
-
你能看到 System.getProperty("user.dir") (当前目录)的输出是什么吗?
-
@Serge 给出了
/Users/Eric/Desktop/Test Server,这是我的服务器的 spigot 主 jar 所在的路径。这确实完全关闭,因为我试图从我的插件的 jar (jar of我的插件位于/Users/Eric/Desktop/Test Server\plugins\Heaven-0.1.jar。 -
Heaven-0.1.jar 在正在运行的应用程序的类路径上?