首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Jena NoClassDefFoundError和Maven

Jena NoClassDefFoundError和Maven
EN

Stack Overflow用户
提问于 2012-04-16 15:29:49
回答 3查看 4.5K关注 0票数 0

我有一个我不久前开发的Java项目,它已经不再工作了。它与另一个Maven项目一起使用父pom,我认为在该项目中更改了Jena版本,它还使用了一个使用Jena的外部库。Maven依赖项是:

代码语言:javascript
复制
<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/apache/jena/iri/IRIFactory at org.openjena.riot.system.PrefixMap.add(PrefixMap.java:54) at com.hp.hpl.jena.sparql.util.MappingRegistry.addPrefixMapping(MappingRegistry.java:33) at com.hp.hpl.jena.query.ARQ.init(ARQ.java:449) .

错误不是由我的代码直接引发的,而是由我包含的库引发的。我可以通过降低父pom中的Jena版本来防止这种情况,或者在这里我能做些什么?

P.S.:我现在有了一个复制错误的最小代码示例(java.lang.NoClassDefFoundError: org/apache/jena/iri/IRIFactory):

代码语言:javascript
复制
import org.junit.Test;
import com.hp.hpl.jena.query.ARQ;

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

我想它来自于这种依赖性:

代码语言:javascript
复制
<dependency>
  <groupId>org.apache.jena</groupId>
  <artifactId>jena-arq</artifactId>
  <version>2.9.1-incubating-SNAPSHOT</version>
</dependency>

我知道这里可能有一个工厂而不是一个构造函数,但我想这仍然表明了问题的所在。

P.S.:我注意到我有依赖关系"jena“、"arq”和"jena-arq":

代码语言:javascript
复制
<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“。但我还是明白错误

代码语言:javascript
复制
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版)孵化器,但是我仍然可以在没有使用"jena“和"arq"-dependencies的情况下获得-dependencies。

P.P.S.:

即使在使用以下依赖项时,我仍然会得到相同的错误:

代码语言:javascript
复制
 <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>
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-04-17 13:36:31

通过将作为传递依赖项引入的"jena"-Dependency从某些库中排除出来,我最终解决了这个错误。

票数 1
EN

Stack Overflow用户

发布于 2012-04-16 18:10:57

可以使用Maven中央搜索应用程序搜索缺少的类

  • http://search.maven.org/#search|ga|1|fc%3A%22com.hp.hpl.jena.query.ARQ%22

它表明,您似乎缺少的依赖项是:

代码语言:javascript
复制
<dependency>
    <groupId>com.hp.hpl.jena</groupId>
    <artifactId>arq</artifactId>
    <version>2.6.0</version>
</dependency>

似乎不是2.6.4版,但您最好还是选择一个更现代的版本(这个项目是最近捐赠给apache的)

票数 2
EN

Stack Overflow用户

发布于 2012-04-16 21:49:45

有关在Maven中使用Apache Jena的说明如下:

Incubator.apache.org/jena/下载/maven.html

将ARQ2.9.0指定为项目pom.xml中的依赖项,将引入您需要的其他Jena组件。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10177100

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档