我有一个我不久前开发的Java项目,它已经不再工作了。它与另一个Maven项目一起使用父pom,我认为在该项目中更改了Jena版本,它还使用了一个使用Jena的外部库。Maven依赖项是:
<dependency>
<groupId>com.hp.hpl.jena</groupId>
<artifactId>jena</artifactId>
<version>2.6.4</version>
</dependency>当我执行我的测试时,我会得到以下错误:
错误不是由我的代码直接引发的,而是由我包含的库引发的。我可以通过降低父pom中的Jena版本来防止这种情况,或者在这里我能做些什么?
P.S.:我现在有了一个复制错误的最小代码示例(java.lang.NoClassDefFoundError: org/apache/jena/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>我知道这里可能有一个工厂而不是一个构造函数,但我想这仍然表明了问题的所在。
P.S.:我注意到我有依赖关系"jena“、"arq”和"jena-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版)孵化器,但是我仍然可以在没有使用"jena“和"arq"-dependencies的情况下获得-dependencies。
P.P.S.:
即使在使用以下依赖项时,我仍然会得到相同的错误:
<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>发布于 2012-04-17 13:36:31
通过将作为传递依赖项引入的"jena"-Dependency从某些库中排除出来,我最终解决了这个错误。
发布于 2012-04-16 18:10:57
可以使用Maven中央搜索应用程序搜索缺少的类
它表明,您似乎缺少的依赖项是:
<dependency>
<groupId>com.hp.hpl.jena</groupId>
<artifactId>arq</artifactId>
<version>2.6.0</version>
</dependency>似乎不是2.6.4版,但您最好还是选择一个更现代的版本(这个项目是最近捐赠给apache的)
发布于 2012-04-16 21:49:45
有关在Maven中使用Apache Jena的说明如下:
Incubator.apache.org/jena/下载/maven.html
将ARQ2.9.0指定为项目pom.xml中的依赖项,将引入您需要的其他Jena组件。
https://stackoverflow.com/questions/10177100
复制相似问题