我正在使用Jena TDB加載RDF數據集並對其進行SPARQL查詢。我使用以下Maven的依賴:Jena TDB java.lang.ExceptionInInitializerError
<dependency>
<groupId>org.apache.jena</groupId>
<artifactId>apache-jena-libs</artifactId>
<type>pom</type>
<version>3.0.1</version>
</dependency>
這裏的地方,我想創建一個TDB數據集中的Java代碼:
public void loadDirectory(String outputFile){
Dataset dataset = TDBFactory.createDataset(directoryPath);
Model tdb = dataset.getDefaultModel();
FileManager.get().readModel(tdb, outputFile);
tdb.close();
dataset.close();
LOG.info("RDF dataset loaded to memory");
}
它的失敗在功能上的第一行:TDBFactory .createDataset(directoryPath),並顯示以下錯誤消息:
Exception in thread "main" java.lang.ExceptionInInitializerError
at org.sdw.model.JenaModel.loadDirectory(JenaModel.java:69)
at org.sdw.Main.main(Main.java:75)
Caused by: java.lang.NullPointerException
at org.apache.jena.tdb.sys.EnvTDB.processGlobalSystemProperties(EnvTDB.java:33)
at org.apache.jena.tdb.TDB.init(TDB.java:250)
at org.apache.jena.tdb.sys.InitTDB.start(InitTDB.java:29)
at org.apache.jena.system.JenaSystem.lambda$init$40(JenaSystem.java:114)
at java.util.ArrayList.forEach(ArrayList.java:1249)
at org.apache.jena.system.JenaSystem.forEach(JenaSystem.java:179)
at org.apache.jena.system.JenaSystem.forEach(JenaSystem.java:156)
at org.apache.jena.system.JenaSystem.init(JenaSystem.java:111)
at org.apache.jena.tdb.TDBFactory.<clinit>(TDBFactory.java:40)
的代碼工作正常。環境中可能更多。當Jena jar被重新捆綁(例如OSGi)或重新打包並且'META-INF/services/org.apache.jena.system.JenaSubsystemLifecycle'文件沒有被正確合併時,通常會發生此錯誤。 – AndyS
請提供一個完整的,最簡單的例子。其他人可以運行不變的東西,只需要說明問題就可以了。 – AndyS
該代碼不會將數據加載到內存中。 – AndyS