2016-06-28 6 views
0

私はRDFを操作するいくつかのコードを書いていますので、jena frameworkに依存しています。私はmavenを使ってコンパイル/パッケージしようとしています。コンパイルが完了しますが、私は試してみて、生成されたjarファイルを実行すると、私が手:jenaに依存するクラスのコンパイル

Exception in thread "main" java.lang.ExceptionInInitializerError 
    at my.package.name.ClassName.<clinit>(SchemaAPI.java:96) 
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. 

これは、(例えばherehere)の前に議論されているが、私は日陰のプラグインが含まれるように、私のPOMファイルを変更した - とI上記のリンクでの議論のコメントに基づいて

は私のmy-project-0.1-jar-with-dependencies.jarファイルで私のMETA-INF/services/org.apache.jena.system.JenaSubsystemLifecycleファイルをチェックして、それは確かにありません...これは問題を解決していない、と私はブリックウォールのビットをヒットしましたTDB(org.apache.jena.tdb.sys.InitTDB)への参照が含まれている - だから私はこれが(ほとんど確かに)問題の原因であることを知っているが、私は解決策を見つけることにはほど遠い。

また、maven-dependency-pluginmaven-compiler-pluginも含まれています。これらは矛盾しないと思いますか?

さらに詳細

アンディ・Sさんのコメントに応じていくつかの余分な情報。私のポンポンファイルの関連部分は次のとおりです。

<transformers> 
    <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer"> 
    <mainClass>uk.co.domain.mypackage.MyClass</mainClass> 
    </transformer> 
    <transformer implementation="org.apache.maven.plugins.shade.resource.ServicesResourceTransformer" /> 
    <transformer implementation="org.apache.maven.plugins.shade.resource.ApacheLicenseResourceTransformer" /> 
    <transformer implementation="org.apache.maven.plugins.shade.resource.ApacheNoticeResourceTransformer"> 
    <addHeader>false</addHeader> 
    </transformer> 
</transformers> 

META-INF内の関連するファイルは、1つのクラスを含んでいます

$more META-INF/services/org.apache.jena.system.JenaSubsystemLifecycle 
org.apache.jena.tdb.sys.InitTDB 
$ 

私もの初めに

JenaSystem.init(); 

を追加しようとしました私のメインクラスですが、これは助けにはなりません

+0

実行しようとしているコードがあるgithubレポなどがありますか? – Ulises

+0

ビルドするのではなく、Maven Centralから特定のバージョンを使用してみませんか? –

+0

@Ulises no、申し訳ありません(コードを公開しないことに関する会社の方針:/) - 私は(比較的)最小限の例を試してみることができますが、最初にチェックしたかったのは明らかな間違いではないでしょう – ChrisW

答えて

0

これはクラスパスの問題ではなく、誤った使用や誤った設定の問題。基本的に、ヌルポインタ例外at line 33 of EnvTDB、具体的にはTDB.getContext()が返されます。nullが返されます。たぶんこれを最初に実行してみてください:

org.apache.jena.query.ARQ.init(); 
+0

申し訳ありません - これで解決できませんでした... – ChrisW

+0

デバッグを試して、失敗した場所を見つけてください。 –

+0

エラーは私の元の質問と同じです - mavenパッケージの外付けジャンパーとの関係で、デバッグを開始する方法は本当にわかりません – ChrisW

関連する問題