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