Hier ist der Code:Jena model.setNsPrefixes durch 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();
}*
Es wirft immer einen java.lang.NullPointerException, wenn es die Linie der model.setNsPrefixes() führt, und das Detail print finden als:
java.lang.NullPointerException bei org.apache.jena.tdb.store.DatasetPrefixesTDB.readPrefix (DatasetPrefixesTDB.java:86) bei org.apache.jena.sparql.graph.GraphPrefixesProjection .get (GraphPrefixesProjection.java:101) bei org.apache.jena.sparql.graph.GraphPrefixesProjection.set (GraphPrefixesProjection.java:79) bei org.apache.jena.shared.impl.PrefixMappingImpl.setNsPrefix (PrefixMappingImpl.java:75) bei org.apache. jena.shared.impl.PrefixMappingImpl.setNsPrefixes (PrefixMappingImpl.java:163) bei org.apache.jena.rdf.model.impl.ModelCom.setNsPrefixes (ModelCom.java:1043) bei ReadTransaction. (ReadTransaction.java:32) bei ReadTransaction.main (ReadTransaction.java:133)
I jena API überprüft haben, und ich konnte keine Lösung nicht finden.
Danke für jede Antwort!
Mit Version Apache Jena 3.1.1, bekomme ich "org.apache.jena.tdb.TDBException: Allocation Versuch auf NodeTableReadonly", die korrekt ist. Der obige Code hat "Dataset.begin (ReadWrite.READ)". Es wurde der Punkt im Stacktrace übergeben. – AndyS
Andere mögliche Ursachen sind die nicht-transaktionale Verwendung zu einem früheren Zeitpunkt (ein anderer JVM-Lauf) mit einem unsauberen Herunterfahren oder zwei Prozessen, die auf die gleichen Dateien zugreifen. – AndyS
@AndyS vielen Dank für deine Kommentare, es geht tatsächlich um das unsaubere Ende einer Transaktion, ich habe die Datendateien erneut generiert, und die Ausnahme trat nicht mehr auf. – Tahirih