Jena TDB java.lang.ExceptionInInitializerError

匿名 (未验证) 提交于 2019-12-03 01:25:01

问题:

I'm using Jena TDB for loading an RDF dataset and making SPARQL queries against it. I'm using the following maven dependency:

org.apache.jenaapache-jena-libspom3.0.1

And here's the java code where I'm trying to create a TDB dataset:

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");       }      

It's failing on the first line of the function: TDBFactory.createDataset( directoryPath ) with the following error message:

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.(TDBFactory.java:40)

回答1:

The POM uses the shade plugin. It needs to manage services files (META_INF/services/) with a ServicesResourceTransformer transformer. org.apache.maven.plugins.shade.resource.ServicesResourceTransformer

See for example: https://github.com/apache/jena/blob/master/jena-fuseki2/jena-fuseki-server/pom.xml



标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!