私は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.
これは、(例えばhereとhere)の前に議論されているが、私は日陰のプラグインが含まれるように、私の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-plugin
とmaven-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();
を追加しようとしました私のメインクラスですが、これは助けにはなりません
実行しようとしているコードがあるgithubレポなどがありますか? – Ulises
ビルドするのではなく、Maven Centralから特定のバージョンを使用してみませんか? –
@Ulises no、申し訳ありません(コードを公開しないことに関する会社の方針:/) - 私は(比較的)最小限の例を試してみることができますが、最初にチェックしたかったのは明らかな間違いではないでしょう – ChrisW