簡體   English   中英

在耶拿運行sparql查詢時出現java.lang.InstantiationError

[英]java.lang.InstantiationError while running sparql query in jena

親愛的朋友,我在項目中使用Jena框架和virtuoso以及RDF數據庫模型。 我的jena版本是jena-core2.7.2和jena-arq-2.9.2

這是我的代碼給我錯誤

public JsonArray getCountryAutoSuggestData()
{
    JsonArray countryArray = new JsonArray();
    Model model = DataModel.getModel();
    String mystr = " PREFIX plcontologyurl:<http://www.plcontology.com/#> "
            + " PREFIX rdf:<http://www.w3.org/1999/02/22-rdf-syntax-ns#> "
            + "select ?cn"
            + " where "
            + " { "
            + " ?d plcontologyurl:Country_Name ?cn . "
            + "}";
    Query query = QueryFactory.create(mystr);
    QueryExecution qe = QueryExecutionFactory.create(query, model);
    QuerySolutionMap qMap = new QuerySolutionMap();
    qe.setInitialBinding(qMap);
    ResultSet rs = qe.execSelect();
    while(rs.hasNext())
    {
        qMap = (QuerySolutionMap)rs.next();
        countryArray.add(new JsonPrimitive(qMap.getLiteral("cn").getString()));
    }
    return countryArray;
}

錯誤是java.lang.InstantiationError:com.hp.hpl.jena.sparql.engine.binding.BindingMap在while(rs.hasNext())行

我試圖尋找問題,發現了一個相關的討論

他們說現在com.hp.hpl.jena.sparql.engine.binding.BindingMap在此版本中現在不是一個簡單的類,而是一個接口。

如果是這樣,那么如何在當前版本中運行sparql查詢。 請根據我分享的代碼給出一個例子。 提前致謝。

您在類路徑上混合了多個版本。

您鏈接到的信息是正確的-BindingMap成為接口,因此,如果看到java.lang.InstantiationError,則表明調用代碼來自ARQ的早期版本。

檢查類路徑上是否有多個Jena代碼副本,並且JVM的認可目錄中沒有副本。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM