Lire-0.9.4-beta1初始化DocumentBuilder出错

来源:互联网 发布:2017软考程序员真题 编辑:程序博客网 时间:2024/06/05 16:11

错误原因:0.9.4-beta1这个版本的net.semanticmetadata.lire.indexing.hashing包下缺少一个名为LshBitSampling.obj的文件


本人利用Maven导入Lire框架,可是Maven Repository中唯一的一个版本是0.9.4-kzwang-beta1(点击打开链接)

在做测试的时候报出了一个初始化错误:


Exception in thread "main" java.lang.ExceptionInInitializerErrorat net.semanticmetadata.lire.DocumentBuilderFactory.getDefaultDocumentBuilder(DocumentBuilderFactory.java:67)Caused by: java.lang.NullPointerExceptionat java.util.zip.InflaterInputStream.<init>(Unknown Source)at java.util.zip.GZIPInputStream.<init>(Unknown Source)at java.util.zip.GZIPInputStream.<init>(Unknown Source)at net.semanticmetadata.lire.indexing.hashing.BitSampling.readHashFunctions(BitSampling.java:148)at net.semanticmetadata.lire.impl.GenericDocumentBuilder.<clinit>(GenericDocumentBuilder.java:89)... 2 more


错误显示DocumentBuilder工厂在初始化DocumentBuilder时出错

我从“at net.semanticmetadata.lire.impl.GenericDocumentBuilder.<clinit>(GenericDocumentBuilder.java:89)”这个地方开始一层层往上寻找错误

直到最后一层“at java.util.zip.InflaterInputStream.<init>(Unknown Source)”,我看了源码是这样的:

public InflaterInputStream(InputStream in, Inflater inf, int size) {        super(in);        if (in == null || inf == null) {            throw new NullPointerException();        } else if (size <= 0) {            throw new IllegalArgumentException("buffer size <= 0");        }        this.inf = inf;        buf = new byte[size];    }
从“if (in == null || inf == null) {
            throw new NullPointerException();
        }”这段代码可看出抛出空指针异常的原因是in或inf为空,但是inf在GZIPInputStream中通过new Inflater(true)创建,这个创建语句没有报错,说明inf不为空

所以抛出错误的原因就是in为空,这个in是在BitSampling.readHashFunctions方法中通过“BitSampling.class.getResourceAsStream(hashFunctionsFileName)”来创建的

hashFunctionsFileName的值为LshBitSampling.obj。


到这,我突然想到了点什么。(至于是什么我也不明白,反正我就很自然的做出下面的动作。。。。)

于是我就去找之前可以成功运行lire框架的项目,该项目的Lire框架版本为0.9.4-beta2。

我一层层打开,直到我打开net.semanticmetadata.lire.indexing.hashing包时,一切的错误都解决了,因为我新项目导入的0.9.4-beta1的

net.semanticmetadata.lire.indexing.hashing包下没有LshBitSampling.obj文件,而以前的项目中有此文件。



最后附上Lire官网:点击打开链接


0 0
原创粉丝点击