2013-04-01 47 views
2

我正在和Jena玩一下,并在Eclipse中设置了一个Java Google Web应用程序项目。我下载了Jena 2.0库,并将它们添加到项目的构建路径中,并添加到/war/WEB-INFO/lib/文件夹中。java.lang.NoClassDefFoundError:无法初始化类com.hp.hpl.jena.query.Query

我简单的servlet试图使用的代码

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

以下行来实例化一个查询所以没有编译错误,正如我所说的Libarries都在构建路径,在WEB下的lib文件夹-INF(在战争DIR)

当我运行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类是仙子pheralServlet.java和方法extractPlace中的第102行是我尝试实例化查询对象的上述代码。

任何人都可以给我一个线索,我的问题可能是什么?对我来说,它看起来像一个缺少的jar包含或在该行上的东西,但正如我所说,我包括所有jar Jena文件到项目的构建路径和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年,所以耶拿版本2.6。假设我们在2013年和耶拿已经发展到了2.10版本,我想他们不那么相关

+0

将Apache Jena jar添加到您的eclipse项目中:https://www.cs.duke.edu/courses/fall06/cps004g/assign/shotgun/addlibrary.html –

+0

我已经将所有的Jena jar添加到了那里。除此之外,Google Eclipse插件使用Jetty。这实际上很重要吗? – dncolomer

+0

您可能混有耶拿瓶,或者他们可能会腐败 - 请确保您只使用相同版本的罐子,例如2.10.0 – AndyS

回答

0

添加下面的罐子classpath

arq-2.8.1-SHAPSHOT.jar

+0

仍然得到相同的异常 – dncolomer

+0

@ user1450813确保您已经为此jar添加了依赖项。 –

0

我有同样的问题与ModelFactory.createDefaultModel(); 的罐子来从最后的耶拿(2.11.0)和AppEngine 1.8.4开始。

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

相关问题