我和Jena一起玩,我在Eclipse中设置了一个Java Google Web Application项目。我下载了Jena 2.0 Libraries并将它们添加到项目的Build路径以及/war/WEB-INFO/lib/
文件夹中。
My Simple servlet尝试使用以下代码行
实例化Query...
Query query = QueryFactory.create(queryString);
...
所以没有编译错误,因为我说Libarries都在Build Path和WEB-INF下的lib文件夹中(在战争目录中)。
当我运行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
实际上没有错误,Query
和QueryFactory
都在同一个Jena包中吗?
EDIT2:从头开始重复这个过程并确保现在只包含一次所需的罐子后,我得到以下异常:
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版本,我猜他们并不那么相关
答案 0 :(得分:0)
将以下jar添加到classpath
答案 1 :(得分:0)
ModelFactory.createDefaultModel();
我遇到同样的问题
罐子来自上一个Jena(2.11.0)和AppEngine 1.8.4。
XercesImpl
遇到了问题,因此我将其从构建路径中删除了。
但是我发现错误是在运行时并且没有发出编译警告,我仍然感到非常奇怪。