我在 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 中的类。
我还检查了我使用类加载器的位置,它们不为空并且正确加载了正确的文件。