我有一个不久前开发的 Java Maven 项目,但它不再起作用了。它使用父 pom 和另一个 Maven 项目,我认为 Jena 版本已更改,它还使用使用 Jena 的外部库。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/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) 在 com.hp.hpl.jena.query.ARQ.init(ARQ.java:449) [...]
这些错误不是由我的代码直接引发的,而是由我包含的库引发的。我可以通过降级父 pom 中的 Jena 版本来防止这种情况发生吗?或者我可以在这里做什么?
PS:我现在有一个重现错误的最小代码示例(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>
我知道可能有工厂而不是构造函数,但我想这仍然表明问题出在哪里。
PS:我注意到我有依赖项“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>
所以我想也许我有太多重叠的依赖关系并注释掉了“jena”和“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-incubating,但是在使用和不使用“jena”和“arq”依赖项的情况下,我仍然得到 NoClassDefFoundError。
PP:
即使我使用以下依赖项,我仍然会遇到相同的错误:
<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>