2012-04-16 80 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)的

相关问题