java - 构建 jar 上的 file.listFiles() NullPointerException

标签 java

当我在 Intellij Idea 上运行我的代码时,它工作得很好,但是当我在 .jar 上运行我的代码(所以构建)时,出现 NullPointerException。有人知道为什么以及如何解决这个问题吗?

File folder = new 
File(Main.class.getClassLoader().getResource("assets/maps/").getPath());
System.out.println(folder);
System.out.println(folder.listFiles());
for (File file : folder.listFiles()) {
    if(file.getName().endsWith(".btdm"))
    maps.add(getMap(file));
}

控制台:

file:\E:\Programmation\BabyTD\out\artifacts\BabyTD_jar\BabyTD.jar!\assets\maps
null
Exception in thread "main" java.lang.NullPointerException
at fr.picearth.Main.getMaps(Main.java:51)
at fr.picearth.Main.main(Main.java:26)

最佳答案

如果folder不是文件夹或由于某种原因无法访问(包括java.io.File无法像普通文件夹一样打开jar或其他zip文件),然后listFiles()将返回 null。您已经在打印输出中看到了这一点。您必须在迭代之前检查:

File[] files = folder.listFiles();
if (files != null)
    for (File file : files)
        if(file.getName().endsWith(".btdm"))
            maps.add(getMap(file));

但是,您可能想使用 java.util.zip.ZipFile相反

关于java - 构建 jar 上的 file.listFiles() NullPointerException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55149617/

相关文章:

java - RxJava 棘手的 startWith(Observable)

java - Janino动态编译接口(interface)类

java - JPA(Hibernate、EclipseLink)映射 : why doesn't this code work (chain of 2 relationships using JPA 2. 0,@EmbeddedId 复合 PK-FK)?

jar - Java - ant找不到rt.jar

java - 实现静态 util 方法应遵循的标准

java - 为什么 VisualVm 和 JOL 工具对对象大小给出不同的结果

java - Java 如何在其 16 位 char 类型中存储 UTF-16 字符?

java - JUnit 如何测试迭代器

java - Spring 的 JavaMailSenderImpl 抛出异常但仍然发送邮件

java - 将 Android 客户端连接到 NodeJS 中的套接字服务器时出错