2

私は Jena を少しいじっており、Eclipse で Java Google Web アプリケーション プロジェクトをセットアップしています。Jena 2.0 ライブラリをダウンロードし、プロジェクトのビルド パスと/war/WEB-INFO/lib/フォルダーに追加しました。

私の単純なサーブレットは、次のコード行を使用してクエリをインスタンス化しようとします

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

そのため、コンパイル エラーは発生せず、前述のように、ライブラリはビルド パスと WEB-INF の下の lib フォルダー (war dir 内) の両方にあります。

webapp を実行してサーブレットを実行すると、次の例外が発生します。

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)

サーブレット クラスは PeripheralServlet.java で、メソッドextractPlaceの 102 行目は、上記の Query オブジェクトをインスタンス化しようとしている場所です。

私の問題が何であるかについて、誰かが私に手がかりを与えることができますか? 私には、jar インクルードが欠落しているか、その行に何かがあるように見えますが、私が言ったように、プロジェクトのビルド パスと WEB-INF の下の lib フォルダーの両方にすべての jar Jena ファイルを含めました。

どうもありがとうございました。

編集:奇妙なことは、QueryFactory実際にはエラーが発生せず、両方QueryQueryFactory同じ 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バージョンに進化したと仮定すると、それらはあまり関連性がないと思います

4

2 に答える 2

0

次のjarを追加しますclasspath

arq-2.8.1-SHAPSHOT.jar

于 2013-04-01T13:33:14.333 に答える