2013-04-01 3 views
2

Я немного поиграл с Jena, и я создал проект Java Web Application в Java в Eclipse. Я загрузил библиотеки Jena 2.0 и добавил их в путь сборки проекта, а также в папку /war/WEB-INFO/lib/.java.lang.NoClassDefFoundError: Не удалось инициализировать класс com.hp.hpl.jena.query.Query

Мой простой сервлет пытается создать экземпляр запроса, используя следующую строку кода

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

Таким образом, нет никаких ошибок компиляции и, как я сказал, Libarries оба в Build Path и в Lib папку под WEB -INF (в войне реже.)

Когда я Запуск веб-приложение и выполнять сервлет я получаю следующее исключение:

класса
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) 

сервлета Peri pheralServlet.java и строка 102 в методе extractPlace - это выше, где я пытаюсь создать экземпляр объекта Query.

Может ли кто-нибудь дать мне ключ к вопросу о моей проблеме? Для меня это похоже на отсутствующее включение jar или что-то в этой строке, но, как я уже сказал, я включил все файлы Jena Jena в как путь сборки проекта, так и папку lib в WEB-INF.

спасибо.

EDIT: Странная вещь, что 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 году и Йена превратилась в его 2,10 версии я предполагаю, что они не настолько актуальны

+0

Добавить Apache Jena jar в проект вашего затмения: https://www.cs.duke.edu/courses/fall06/cps004g/assign/shotgun/addlibrary.html –

+0

У меня уже есть все банки Jena. Кроме того, этот плагин Google Eclipse использует Jetty. Это действительно имеет значение? – dncolomer

+0

Возможно, у вас есть смесь банки Jena или они могут быть повреждены - убедитесь, что вы используете только банки из той же версии, например. 2.10.0 – AndyS

ответ

0

Добавьте следующую баночку classpath

arq-2.8.1-SHAPSHOT.jar

+0

По-прежнему получать одинаковые исключения – dncolomer

+0

@ user1450813 Убедитесь, что вы добавили зависимости для этой банки. –

0

У меня такая же проблема с ModelFactory.createDefaultModel(); Банки приходят от последних Jena (2.11.0) и AppEngine 1.8.4.

XercesImpl имел проблемы, поэтому я удалил его из пути построения. Но все же мне показалось очень странным, что ошибка во время выполнения и не выдается предупреждение о компиляции.

Смежные вопросы