2012-04-16 17 views
0

私は少し前に開発したJava Mavenプロジェクトを持っていますが、これはもう動作しません。それはJenaのバージョンが変更されたと思う別のMavenプロジェクトと一緒に親pomを使用し、Jenaを使用する外部ライブラリも使用します。 Mavenの依存関係は次のとおりです。Jena NoClassDefFoundError with Maven

<dependency> 
<groupId>com.hp.hpl.jena</groupId> 
<artifactId>jena</artifactId> 
<version>2.6.4</version> 
</dependency> 

私は私のテストを実行すると、私は次のエラーを取得:

  • はjava.lang.NoClassDefFoundErrorが:クラス com.hp.hpl.jena.queryを初期化できませんでしたが.ARQ
  • java.lang.NoClassDefFoundErrorが:ORG /アパッチ/イエナ/ IRI com.hp.で/ IRIFactory org.openjena.riot.system.PrefixMap.add(PrefixMap.java:54)で com.hp.hpl.jena.query.ARQ.initでhpl.jena.sparql.util.MappingRegistry.addPrefixMapping(MappingRegistry.java:33) (ARQ.java:449)[...]

エラーは自分のコードでは直接スローされませんが、私がインクルードするライブラリによってスローされます。親POMのJenaバージョンをダウングレードすることでこれを防ぐことができますか、ここで何ができますか?

PS:(:ORG/apacheの/イエナ/ IRI/IRIFactory java.lang.NoClassDefFoundErrorが):

import org.junit.Test; 
import com.hp.hpl.jena.query.ARQ; 

public class DependencyTest 
{ 
    @Test 
    public void testARQ() 
    { 
     ARQ a = new ARQ();  
    } 
} 

そして、私は推測することは、この依存関係から来て、私は今、エラーを再現する最小限のコード例を持っています:

おそらくコンストラクタの代わりにファクトリがあることは知っていますが、これはまだ問題がどこにあるかを示していると思います。

PS:私は、私は依存関係「イエナ」を持っていたことに気づいた「ARQ」と「イエナ-ARQ」:

<dependency> 
<groupId>com.hp.hpl.jena</groupId> 
<artifactId>arq</artifactId> 
<version>2.8.8</version> 
</dependency> 

<dependency> 
<groupId>org.apache.jena</groupId> 
<artifactId>jena-arq</artifactId> 
<version>2.9.1-incubating-SNAPSHOT</version> 
</dependency> 

dependency> 
<groupId>com.hp.hpl.jena</groupId> 
<artifactId>jena</artifactId> 
<version>2.6.4</version> 
</dependency> 

だから私は多分私はあまり重なって依存関係を持っており、「イエナ」をコメントアウト思いましたと "arq"。しかし、私はまだ、私はまた、非スナップショットバージョン2.9.0-インキュベーションを強制的に試してみた

java.lang.NoClassDefFoundError: Could not initialize class com.hp.hpl.jena.query.ARQ 
    at com.hp.hpl.jena.sparql.engine.http.QueryEngineHTTP.<init> [...] 

エラーが出るが、その後私はまだとし、「イエナ」と「ARQ」を使用せずに、NoClassDefFoundErrorがを得ます - 依存関係。

PPS:私は次の依存関係を使用する場合でも、

私はまだ同じエラーを取得:

<dependency> 
    <groupId>org.apache.jena</groupId> 
    <artifactId>jena-arq</artifactId> 
<version>2.9.0-incubating</version> 
</dependency> 

<dependency> 
    <groupId>org.apache.jena</groupId> 
    <artifactId>jena-core</artifactId> 
<version>2.7.0-incubating</version> 
</dependency> 

<dependency> 
    <groupId>org.apache.jena</groupId> 
    <artifactId>jena-iri</artifactId> 
<version>2.7.0-incubating</version> 
</dependency> 

答えて

0

私は最終的にいくつかのライブラリから推移的な依存関係として持ち込まれた "jena" - 依存関係を除外することでこのエラーを解決しました。

1

あなたは

あなたが見逃している依存関係は次のとおりです:

<dependency> 
    <groupId>com.hp.hpl.jena</groupId> 
    <artifactId>arq</artifactId> 
    <version>2.6.0</version> 
</dependency> 

バージョン2.6のようには見えません。4、あなたはprobabily最良のより現代的なバージョンのために行くことをお勧めしている(このプロジェクトは、最近のApacheに寄贈された)MavenのApacheとイエナを使用するための