我在调用基本hasNext()
方法时遇到了一些问题。
我不明白为什么会这样。执行中有一段时间,程序将在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),虽然我不是这个调试工具的主人,但我找不到任何相关的东西来查明异常的起源。 / p>
我在这里不知所措,请发送帮助D:
答案 0 :(得分:0)
感谢@ user205512和@JoshuaTaylor,我找到了问题。
我正在使用一个推理程序,它会挂起程序寻找更多节点但从未真正处理它(默认的Jena包为Reasoners实现了一个接口,但没有工作推理器。)
解决方案:要么放弃使用推理器(在处理本体时不太重要),要么得到合适的推理器并使其工作(我目前正试图驯服Pellet推理器:P)