下面是代碼:耶拿model.setNsPrefixes通過顯示java.lang.NullPointerException
*Location location = Location.create("target/DBLP");
Dataset dataset = TDBFactory.createDataset(location);
dataset.begin(ReadWrite.READ);
Model model = dataset.getDefaultModel();
HashMap<String, String> prifixMap = new HashMap<>();
prifixMap.put("rdf","<http://www.w3.org/1999/02/22-rdf-syntax-ns#>");
try{
model.setNsPrefixes(prifixMap);
}
catch (Exception e)
{
e.printStackTrace();
}*
它始終引發一個顯示java.lang.NullPointerException當它執行model.setNsPrefixes()的線,並且所述細節的printStackTrace是如下:在org.apache.jena.tdb.store.DatasetPrefixesTDB.readPrefix(DatasetPrefixesTDB.java:86)
顯示java.lang.NullPointerException 在org.apache.jena.sparql.graph.GraphPrefixesProjection .get(GraphPrefixesProjection.java:101) at org.apache.jena.sparql.graph.GraphPrefixesProjection.set(GraphPrefixesProjection.java:79) at org.apache.jena.shared.impl.PrefixMappingImpl.setNsPrefix(PrefixMappingImpl.java:75) at org.apache。 jena.shared.impl.PrefixMappingImpl.setNsPrefixes(PrefixMappingImpl.java:163) 在org.apache.jena.rdf.model.impl.ModelCom.setNsPrefixes(ModelCom.java:1043) 在ReadTransaction。(ReadTransaction.java:32 ) 在ReadTransaction.main(ReadTransaction.java:133)
我已經檢查耶拿API,我找不到任何解決辦法。
感謝您的任何答案!
隨着版本Apache Jena 3.1.1,我得到「org.apache.jena.tdb.TDBException:在NodeTableReadonly上的分配嘗試」,這是正確的。上面的代碼有「dataset.begin(ReadWrite.READ)」。它通過了堆棧跟蹤中的點。 – AndyS
其他可能的原因是在過去的某個時間(另一個JVM運行)非關閉或兩個進程訪問相同文件的非事務性使用。 – AndyS
@AndyS非常感謝您的評論,這確實是關於交易不清的結束,我再次生成數據文件,並且異常不再發生。 – Tahirih