2016-12-06 8 views
0

介してイエナ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(); 
    }* 

がmodel.setNsPrefixes(のラインを実行する際には常にjava.lang.NullPointerExceptionが発生します)、および詳細のprintStackTrace org.apache.jena.sparql.graph.GraphPrefixesProjectionで org.apache.jena.tdb.store.DatasetPrefixesTDB.readPrefix(DatasetPrefixesTDB.java:86)で

java.lang.NullPointerExceptionが 次の通りであります.get(GraphPrefixesProjection.java:101)(GraphPrefixesProjection.java:79) (org.apache.jena.shared.impl.PrefixMappingImpl.setNsPrefix(PrefixMappingImpl.java:75) ) jean.shared.impl.PrefixMappingImpl.setNsPrefixes(PrefixMappingImpl.java:163) 、org.apache.jena.rdf.model.impl.ModelCom.setNsPrefixes(ModelCom.java:1043) at ReadTransaction(ReadTransaction.java:32) ReadTransaction.mainで) (ReadTransaction.java:133)

私はイエナのAPIをチェックして、そして私はどんな解決策を見つけることができませんでした。

ありがとうございました!

+1

Apache Jena 3.1.1のバージョンでは、「org.apache.jena.tdb.TDBException:割り当てをNodeTableReadonlyで試行しました」が正しいです。上記のコードは "dataset.begin(ReadWrite.READ)"です。スタックトレースのポイントを通過しました。 – AndyS

+1

その他の考えられる原因は、過去のある時点(別のJVM実行時)に、不正なシャットダウンを伴う非トランザクション使用、または同じファイルにアクセスする2つのプロセスです。 – AndyS

+0

@AndySはあなたのコメントに感謝しています。トランザクションの不正な終わりについてです。データファイルを再度生成しましたが、例外はそれ以上発生しませんでした。 – Tahirih

答えて

2

次のコードは、私の仕事:

Location location = Location.create("target/DBLP"); 
    Dataset dataset = TDBFactory.createDataset(location); 
    dataset.begin(ReadWrite.WRITE); // changed from READ to WRITE 
    Model model = dataset.getDefaultModel(); 
    HashMap<String, String> prefixMap = new HashMap<>(); 
    prefixMap.put("rdf", "http://www.w3.org/1999/02/22-rdf-syntax-ns#"); // removed '<' and '>' 
    try { 
     model.setNsPrefixes(prefixMap); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 

キーがWRITEREADからトランザクション・タイプを変更することです。あなたは書き込みトランザクションにいなければならないようにデータを書き込もうとしています!

関連する問題