Jena的OSGi的3.0.1 ModelFactory.createDefaultModel()拋出當我們在JUNIT運行下面的代碼的的ExceptionInInitializerError(4.11)環境在Eclipse:耶拿的OSGi 3.0.1的ExceptionInInitializerError processGlobalSystemProperties
// Convert the XML to RDF model
StringReader stringReader = new StringReader(xml);
Model model = ModelFactory.createDefaultModel();
model.read(stringReader, null, RDFLanguages.RDFXML.getLabel());
堆棧跟蹤如下:
java.lang.ExceptionInInitializerError
...
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.rdf.model.ModelFactory.<clinit>(ModelFactory.java:49)
... 25 more
相同的代碼工作,如果我們使用耶拿-TDB 3.0.1,而不是在耶拿的OSGi的3.0.1。我們需要在OSGi環境(Servicemix)中運行我們的代碼,所以我們得到OSGi的一部分是非常重要的。
我在堆棧溢出中看到類似的錯誤報告,但他們都沒有解決我們的問題。我在想也許我們錯過了一個圖書館?這些都是我們在使用Maven進口的罐子:
- org.apache.jena:耶拿OSGi的:3.0.1
- org.apache.servicemix.bundles:org.apache.servicemix.bundles.xerces: 2.11.0_1
- com.github.andrewoma.dexx:dexx-集合:0.2
- 公地-CLI:公地-CLI:1.3
- 公地編解碼器:公地編解碼器:1.6
- 公地-10: commons-io:2.4
- org.apache.httpcompone NTS:HttpClient的緩存:4.2.5
- XML的API:XML的API:1.4.01
注意:我們試圖用耶拿3.1.0 OSGi和一個沒有工作,但JSON-當junit在maven中運行時(xml命名空間前綴被剝離),LD顯得很奇怪,但在Eclipse中工作正常。
通過JSON,你的意思是JSON-LD?否則有什麼有XML名稱空間去做與JSON?看起來像是一個單獨的問題給我的OSGi問題。 – AndyS
https://issues.apache.org/jira/browse/JENA-1164是OSGi問題的修復。這包括升級Dexx系列。 – AndyS
是的,我的意思是JSON-LD,是的它是一個單獨的問題。我添加了「註釋」,所以很明顯,我們已經嘗試了其他版本,並且其他版本都是半工作的。 – Thirlan