我正在与Jena交流,并在Eclipse中建立了一个Java Google Web应用程序项目。我下载了Jena 2.0库,并将它们添加到项目的Build路径以及/war/WEB-INFO/lib/文件夹中。

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

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


因此没有编译错误,正如我所说,Libarries既在Build Path中,又在WEB-INF下的lib文件夹中(在war dir中)。

当我运行webapp并执行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包含物或在那一行上的东西,但是正如我所说,我将所有jar Jena文件都包含在项目的Build Path和WEB-INF下的lib文件夹中。

非常感谢你。

编辑:奇怪的是,它实际上没有给出QueryFactory错误并且QueryQueryFactory都在同一个耶拿包中,对吗?

EDIT2:从头开始重复此过程并确保仅包含所需的jar之后,现在出现以下异常:

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版本,我想它们不太相关

最佳答案

将以下罐子添加到classpath

arq-2.8.1-SHAPSHOT.jar

09-10 03:38
查看更多