2012-04-16 86 views
0

我有一個前段時間開發的Java Maven項目,並且不再工作。它將父pom與另一個Maven項目一起使用,我認爲Jena版本已更改,並且還使用了使用Jena的外部庫。 Maven的依賴關係是:Jena NoClassDefFoundError與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:組織/阿帕奇/耶拿/ IRI/IRIFactory 在org.openjena.riot.system.PrefixMap.add(PrefixMap.java:54) 在com.hp. hpl.jena.sparql.util.MappingRegistry.addPrefixMapping(MappingRegistry.java:33) 在com.hp.hpl.jena.query.ARQ.init(ARQ.java:449)[...]

錯誤不是由我的代碼直接拋出,而是由我包含的庫引發。我可以通過降級父母的耶拿版本來防止這種情況發生,或者我可以在這裏做什麼?

PS:我現在有再現誤差最小的代碼示例(java.lang.NoClassDefFoundError:組織/阿帕奇/耶拿/ IRI/IRIFactory):

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

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

我猜它來自這種依賴性:

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

我知道可能有一個工廠,而不是一個構造函數,但我想這仍然顯示問題出在哪裏。

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」。但我仍然得到錯誤

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

我也嘗試了迫使非快照版本2.9.0-孵化,但我仍然得到NoClassDefFoundError的使用和不使用「耶拿」和「ARQ」 - 依賴。

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

您可以搜索使用Maven的中央搜索應用

它表明您似乎缺少的依賴關係是:

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

看起來不是版本2.6。4,但你最好probabily建議去一個更現代的版本(該項目於近日捐贈給Apache)的

相關問題