gpt4 book ai didi

java - 从命令行而不是从 IDE 运行 JAR 时,什么会导致 NullPointerException?

转载 作者:行者123 更新时间:2023-11-30 01:39:43 25 4
gpt4 key购买 nike

我在 Eclipse 中有一个项目。当我从 Eclipse 内部运行它时,一切正常。但是,当我运行 Ant 构建脚本并从命令行或使用批处理脚本执行 JAR 时,我收到 NullPointerException。

有问题的 NullPointerException 是从我从源代码编译的第三方 JAR 中抛出的。但是,我怀疑这就是问题所在 - 当我在 Eclipse 中执行它时它会起作用!

什么可能导致此问题以及如何隔离问题并纠正它?

这是我可以显示的尽可能多的堆栈跟踪:

java.lang.NullPointerException
at java.io.FilterInputStream.read(Unknown Source)
at java.io.BufferedInputStream.fill(Unknown Source)
at java.io.BufferedInputStream.read(Unknown Source)
at java.io.DataInputStream.readUnsignedByte(Unknown Source)
at com.jhlabs.dbf.DBFFile.readHeader(DBFFile.java:129)
at com.jhlabs.dbf.DBFFile.<init>(DBFFile.java:76)
at com.jhlabs.map.shapefile.Shapefile.<init>(Shapefile.java:102)
at com.jhlabs.map.layer.ShapefileLayer.<init>(ShapefileLayer.java:62)

我检查了类路径 - 第三方 JAR 确实位于类路径上。然而,我预料到了这一点,因为如果不是这样,我很可能会得到 NoClassDefFoundException,并且我尝试利用 JAR 中的类。

我还检查了使用类加载器的位置,它们不为空并且正确加载了正确的文件。

最佳答案

一种猜测:它试图使用 ClassLoader.getResourceAsStream() 或类似方法查找资源,但在 jar 中找不到它。

当然,如果您告诉我们堆栈跟踪的其余部分,而不仅仅是它是一个 NPE,那么我们的猜测就会少一些……而您已经获得源代码的事实意味着您应该能够找出问题所在准确!

编辑:是的,通过该堆栈跟踪,它可能会创建一个 FilterInputStream 但传入一个 null 流进行包装。 (JDK 确实应该在构造函数中抛出异常,但现在修复它为时已晚。)

关于java - 从命令行而不是从 IDE 运行 JAR 时,什么会导致 NullPointerException?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1137170/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com