簡體   English   中英

java.lang.NoClassDefFoundError:無法初始化類com.hp.hpl.jena.query.Query

[英]java.lang.NoClassDefFoundError: Could not initialize class com.hp.hpl.jena.query.Query

我正在與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文件夾中。

非常感謝你。

編輯:奇怪的是,它實際上沒有給出QueryFactoryQueryQueryFactory都在同一個Jena包中,對嗎?

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

將以下jar添加到classpath

arq-2.8.1-SHAPSHOT.jar

我對ModelFactory.createDefaultModel();有同樣的問題ModelFactory.createDefaultModel(); 罐子來自最后一個Jena(2.11.0)和AppEngine 1.8.4。

XercesImpl遇到問題,因此我從構建路徑XercesImpl其刪除。 但是我仍然非常奇怪,該錯誤是在運行時發出的,並且沒有發出任何編譯警告。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM