Lire-0.9.4-beta1初始化DocumentBuilder出错

错误原因: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.ExceptionInInitializerError
	at net.semanticmetadata.lire.DocumentBuilderFactory.getDefaultDocumentBuilder(DocumentBuilderFactory.java:67)

Caused by: java.lang.NullPointerException
	at 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官网:点击打开链接

 

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值