2016-01-09 235 views
-2

我遇到一些调用基本的hasNext()方法的问题。在hasNext()调用时冻结while循环

我不明白为什么会发生这种情况。有一个在执行的时间,其中的程序将通过这个而对于3次迭代

StmtIterator statementIt = m.listStatements(null, p, obj); 
Statement stamt = null; 
List<Resource> lres = new ArrayList<Resource>(); 
while (statementIt.hasNext()) 
{ 
    stamt = (Statement)statementIt.next(); 
    System.out.println("Debugging: " + stamt.getSubject().toString()); 
    if(!stamt.getSubject().isURIResource()) 
    { 
     break; 
    } 
    if(!lres.contains((Resource)stamt.getSubject())) 
     lres.add((Resource)stamt.getSubject()); 
    System.out.println("debugging: there will be another iteration: " + statementIt.hasNext()); 
} 

而且它通过它的3倍,但随后试图执行hasNext()操作时,它就会被挂起。我试图通过调试视图(我使用Eclipse开发Java)来观察程序的配置文件,虽然我不是这个调试工具的主人,但我没有发现任何与查明异常起源有关的东西。

我在这里的情况,请发送帮助d:

+0

怎么办你创建你的模型? –

+0

你是对的下一个...删除我的答案...对不起:( – Mo1989

+0

模型和StmtIterator是从耶拿包中获得的。我创建一个“空模型”,阅读一些本体文件,然后“加载”说我认为这个问题与该程序的这一点没有任何关系,尽管 – Feillen

回答

0

感谢@ user205512和@JoshuaTaylor我能够找到的问题。

我正在使用一个推理程序来挂起程序寻找更多的节点,但从来没有真正处理它(默认Jena包实现了Reasoners的接口,但没有工作的推理器)。

解决方案:使用推理(不太与本体工作时的点)要么放弃或得到一个正确的推理,并得到它的工作(我正在试图驯服颗粒推理:P)