2016-01-09 233 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)