java.lang.NoClassDefFoundError:无法初始化类com.hp.hpl.jena.query.Query

问题描述 投票:0回答:2

我正在使用 Jena,并在 Eclipse 中设置了一个 Java Google Web 应用程序项目。我下载了 Jena 2.0 库,并将它们添加到项目的构建路径以及

/war/WEB-INFO/lib/ 
文件夹中。

我的简单 servlet 尝试使用以下代码行实例化

Query

...
Query query = QueryFactory.create(queryString);
...

因此,没有编译错误,正如我所说,库都位于构建路径中和

lib
下的
WEB-INF
文件夹中(在war目录中)。

当我运行 web 应用程序并执行 servlet 时,出现以下异常:

java.lang.NoClassDefFoundError: Could not initialize class com.hp.hpl.jena.query.Query
    at com.hp.hpl.jena.query.QueryFactory.create(QueryFactory.java:78)
    at com.hp.hpl.jena.query.QueryFactory.create(QueryFactory.java:52)
    at com.hp.hpl.jena.query.QueryFactory.create(QueryFactory.java:40)
    at nyx.servlets.PeripheralServlet.extractPlace(PeripheralServlet.java:102)
    at nyx.servlets.PeripheralServlet.doCreate(PeripheralServlet.java:83)

servlet 类是

PeripheralServlet.java
,方法
extractPlace()
中的第 102 行是上面我尝试实例化
Query
对象的那行。

有人可以告诉我我的问题可能是什么吗?对我来说,它看起来像是缺少 jar 包含或该行中的某些内容,但正如我所说,我将 Jena 的所有 jar 都包含到项目的构建路径和

lib
下的
WEB-INF
文件夹中。

编辑:

奇怪的是,

QueryFactory
实际上没有给出错误,并且
Query
QueryFactory
都在同一个Jena包中,对吧?

编辑2:

从头开始重复该过程并确保包含所需的罐子后,现在,我得到以下异常:

java.lang.StackOverflowError
  at java.util.regex.Pattern$Curly.match(Pattern.java:3744)
  at java.util.regex.Pattern$GroupHead.match(Pattern.java:4168)
  at java.util.regex.Pattern$Branch.match(Pattern.java:4114)
  at java.util.regex.Pattern$Branch.match(Pattern.java:4112)
  at java.util.regex.Pattern$GroupTail.match(Pattern.java:4227)
  at java.util.regex.Pattern$Curly.match0(Pattern.java:3782)
  at java.util.regex.Pattern$Curly.match(Pattern.java:3744)
  at java.util.regex.Pattern$GroupHead.match(Pattern.java:4168)
  at java.util.regex.Pattern$Start.match(Pattern.java:3055)
  at java.util.regex.Matcher.search(Matcher.java:1105)
  at java.util.regex.Matcher.find(Matcher.java:535)
  at com.google.appengine.tools.development.LocalEnvironment.getServerName(LocalEnvironment.java:302)
  at com.google.appengine.tools.development.DevAppServerImpl.getCurrentAppContext(DevAppServerImpl.java:372)
  ...
  at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:82)
  at org.apache.commons.logging.impl.SLF4JLogFactory.getInstance(SLF4JLogFactory.java:156)
  at org.apache.commons.logging.LogFactory.getLog(LogFactory.java:704)
  at org.slf4j.impl.JCLLoggerFactory.getLogger(JCLLoggerFactory.java:64)
  ...

如果我在此之后重新加载页面,我会再次收到原始异常。我一直在做一些研究,我发现一些相关问题可以追溯到 2009 年,所以 Jena 版本 2.6。假设我们现在是 2013 年,Jena 已经发展到 2.10 版本,我想它不是那么相关。

java eclipse jsp google-app-engine jena
2个回答
0
投票

将以下 jar 添加到

classpath

arq-2.8.1-SHAPSHOT.jar


0
投票

我也有同样的问题

ModelFactory.createDefaultModel();
这些 jar 来自最新的 Jena (2.11.0) 和 AppEngine 1.8.4 。

XercesImpl
有问题,所以我将其从构建路径中删除。 但我还是发现很奇怪,错误是在运行时,并且没有发出编译警告。

© www.soinside.com 2019 - 2024. All rights reserved.