Использование Jena в OSGi - NoClassDefFoundException на javax / management / MalformedObjectNameException - PullRequest
1 голос
/ 15 февраля 2012

Я собираюсь преобразовать существующий проект OSGi, использующий Jena 2.6.4, в другую среду (от Eclipse Equinox до Apache Felix в сочетании с BndTools). Старый проект на Equinox работал очень хорошо, однако у меня есть некоторые проблемы с новым фреймворком. Чтобы включить библиотеки Jena в мой проект, я создал новый «Плагин из существующих архивов JAR». Я экспортировал это в развертываемый плагин и поместил в свой локальный репозиторий. Оттуда я мог бы добавить его к пути сборки моего проекта. Казалось, хорошо работает. Его можно скомпилировать, но когда я запустил проект, при первом доступе к Jena (createResource) возникла исключительная ситуация NoClassDefFoundException в org.xml.sax.SAXException. Чтобы решить эту проблему, я решил обновить библиотеки Jena до 2.7 (с здесь ). Поэтому я сделал те же шаги, что и выше. Проект, опять же, мог скомпилироваться и побежать немного дальше. Теперь вызов createResource не вылетал и работал очень хорошо. Тем не менее, проект потерпел крах при выполнении SPARQL-запроса. Вот выдержка из трассировки стека:

java.lang.NoClassDefFoundError: javax/management/MalformedObjectNameException
    at com.hp.hpl.jena.query.ARQ.init(ARQ.java:437)
    at com.hp.hpl.jena.query.ARQ.<clinit>(ARQ.java:456)
    at com.hp.hpl.jena.query.Query.<clinit>(Query.java:62)
    at com.hp.hpl.jena.query.QueryFactory.create(QueryFactory.java:80)
    at com.hp.hpl.jena.query.QueryFactory.create(QueryFactory.java:52)
    at com.hp.hpl.jena.query.QueryFactory.create(QueryFactory.java:40)
    at com.hp.hpl.jena.query.QueryExecutionFactory.makeQuery(QueryExecutionFactory.java:517)
    at com.hp.hpl.jena.query.QueryExecutionFactory.create(QueryExecutionFactory.java:193)

И, действительно, я не смог найти определение этого исключения в библиотеках Йены. Я что-то пропустил? Или есть другие идеи, как это решить?

Nico

Ответы [ 2 ]

0 голосов
/ 14 сентября 2013

В проекте apache clerezza есть пакет, обеспечивающий Jena TDB. У этого есть maven groupId org.apache.clerezza.ext и artifactId org.apache.jena.tdb. К сожалению, не так много документации. Источник здесь: https://svn.apache.org/repos/asf/clerezza/trunk/ext.org.apache.jena.tdb/.

0 голосов
/ 29 февраля 2012

В моем случае мне нужны эти JAR:

  • Jena-Arg-2.9.0-incubating.jar
  • Jena-ядро-2.7.0-incubating.jar
  • Jena-ири-0.9.0-incubating.jar
  • xercesImpl-2.10.0.jar
  • ICU4J-3.4.4.jar

Когда я впервые столкнулся с этой проблемой с Йеной, я пропустил icu4j.

Я опубликую здесь трассировку стека на случай, если кто-то погуглит:

java.lang.NoClassDefFoundError: Could not initialize class com.hp.hpl.jena.enhanced.BuiltinPersonalities
        at com.hp.hpl.jena.rdf.model.impl.ModelCom.<init>(ModelCom.java:62)
        at com.hp.hpl.jena.rdf.model.ModelFactory.createDefaultModel(ModelFactory.java:142)
        at com.hp.hpl.jena.rdf.model.ModelFactory.createDefaultModel(ModelFactory.java:136)
        at com.satukancinta.dump.command.SiteExport$$anonfun$doExecute$1$$anonfun$apply$1.apply(SiteExport.scala:198)
        at com.satukancinta.dump.command.SiteExport$$anonfun$doExecute$1$$anonfun$apply$1.apply(SiteExport.scala:49)
        at scala.collection.LinearSeqOptimized$class.foreach(LinearSeqOptimized.scala:59)
        at scala.collection.immutable.List.foreach(List.scala:45)
...