2016-08-04 8 views
1

イエナ-のOSGi 3.0.1 ModelFactory.createDefaultModelは()ExceptionInInitializerErrorを投げますトレースは次のとおりです。イエナ-のOSGi 3.0.1 ExceptionInInitializerError processGlobalSystemProperties

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 

jena-osgi 3.0.1の代わりにjena-tdb 3.0.1を使用する場合、同じコードが機能します。私たちはOSGi環境(Servicemix)でコードを実行する必要がありますので、OSGiを動作させることが重要です。

スタックオーバーフローで報告された同様のエラーが発生しましたが、私たちの問題は解決していません。多分私たちは図書館がないと思っていますか?

  1. org.apache.jena:イエナ-のOSGi:3.0.1
  2. org.apache.servicemix.bundles:org.apache.servicemix.bundles.xercesこれらは、私たちはMavenので輸入している瓶のとおりです。 2.11.0_1
  3. com.github.andrewoma.dexx:dexx-コレクション:0.2
  4. コモンズ-CLI:コモンズ-CLI:1.3
  5. コモンズコーデック:コモン・コーデック:1.6
  6. コモンズ-IO: commons-io:2.4
  7. org.apache.httpcompone NTS:HTTPClientはキャッシュ:4.2.5
  8. XML-APIを:XML-のAPI:1.4.01

注:我々はイエナ3.1.0のOSGiを使用しようと、1つの作業を行いますが、JSON- junitがmavenで実行されているときにLDが奇妙に出てきています(xml名前空間接頭辞は削除されています)が、Eclipseで正常に動作します。

+0

JSONでは、JSON-LDを意味しますか?さもなければxml名前空間はJSONと何をするのですか?私にとってOSGiの問題とは別の問題のように見えます。 – AndyS

+1

https://issues.apache.org/jira/browse/JENA-1164は、OSGiの問題の修正です。これには、Dexxコレクションのアップグレードも含まれていました。 – AndyS

+0

はい、私はJSON-LDを意味しました。はい、それは別の問題です。私はそれを「メモ」と付け加えました。他のバージョンを試したことは明らかでしたし、他のバージョンとは半二重です。 – Thirlan

答えて

0

が正しく梱包用のソリューションを提供OSGiバンドルにすべてのServiceLoaderファイルを含める

Jena 3.1.0(具体的にはJENA-1164)へのアップグレードは、さまざまなOSGiフレームワークでServiceLoaderファイルを見つけることに関するjena-osgiの問題の修正です。

2

あなたの問題は、おそらくJenaシステムの初期化に関係しています。それはServiceLoaderメカニズムに依存しています。したがって、正しいMETA-INF/services/リソースが存在しない場合、システムの一部だけがセットアップされ、他のコンポーネントに依存するTDBなどのコンポーネントは、結果として初期化に失敗する可能性があります。

デフォルトはMETA-INF/services/org.apache.jena.system.JenaSubsystemLifecycleを探しServiceLoaderを使用することです:[http://mail-archives.apache.org/mod_mbox/jena-users/201603.mbox/%[email protected]%3E]

提案された解決策が次の通りである -

は次のメーリングリストのスレッドで説明したのと同じ問題を持つように見えます

設定が単一のジャーである場合、すべての モジュールの内容を組み合わせる必要があります。

例えば

、複合瓶で布石は、があります。

org.apache.jena.tdb.sys.InitTDB 
org.apache.jena.riot.system.InitRIOT 
org.apache.jena.sparql.system.InitARQ 
org.apache.jena.system.InitJenaCore 
org.apache.jena.query.text.InitJenaText 
org.apache.jena.query.spatial.InitJenaSpatial 

これはとシェーディング中にPOMで行われています:

<transformer implementation="org.apache.maven.plugins.shade.resource.ServicesResourceTransformer" /> 
RobVの答え@
+0

これを入れてくれてありがとう、私はそれを投票した。しかし、最終的に3.1.0に切り替えるほうが簡単です。 – Thirlan