Загрузка org.w3c.dom.Исключение узла в день автономного равноденствия

#java #osgi #equinox

#java #osgi #равноденствие

Вопрос:

Мое приложение запускает ошибку NoClassDefFoundError, которая ищет org.w3c.dom.Класс узла, когда он работает в автономном режиме поверх Equinox.

Предоставляется ли этот класс фреймворком? В командной строке я запустил команду getprop, и этот класс указан в свойстве org.osgi.framework.system.packages .

Я проверил тег импорта из файла МАНИФЕСТА и все в порядке.

Есть идеи? Что я делаю не так?

Здесь МАНИФЕСТ:

 Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: Protocol-sip-ds
Bundle-SymbolicName: es.umu.imsclient.protocol-sip-ds
Bundle-Version: 1.0.0.qualifier
Bundle-RequiredExecutionEnvironment: JavaSE-1.6
Bundle-Description: A bundle that implements the Protocol Provider package over SIP.
Import-Package: EDU.oswego.cs.dl.util.concurrent,
 es.umu.mvia.imsclient.configuration.event,
 es.umu.mvia.imsclient.configuration.service,
 es.umu.mvia.imsclient.netaddr.service,
 es.umu.mvia.imsclient.service.protocol,
 es.umu.mvia.imsclient.service.protocol.event,
 es.umu.mvia.imsclient.util,
 javax.net.ssl,
 javax.xml.transform,
 org.osgi.framework,
 org.osgi.service.component;version="1.1.0",
 org.osgi.service.event,
 org.osgi.util.tracker,
 org.w3c.dom
Bundle-Vendor: ims-osgi-client
Bundle-ClassPath: .,
 lib/JainSipRi1.2.jar,
 lib/JainSipApi1.2.jar,
 lib/log4j-1.2.15.jar
Service-Component: OSGI-INF/component.xml
  

Вывод пакета [id]:

 osgi> bundle 13
es.umu.imsclient.protocol-sip-ds_1.0.0.qualifier [13]
  Id=13, Status=ACTIVE      Data     Root=C:UsersgsitDesktopoasisconfigurationorg.eclipse.osgibundles13data
  Registered Services
    {es.umu.mvia.imsclient.service.protocol.ProtocolProviderFactory}=   {component.name=protocol-sip-ds, component.id=7, service.id=42}
  Services in use:
    {org.osgi.service.event.EventAdmin}={component.name=org.eclipse.equinox.event,    component.id=11, service.id=41}
    {es.umu.mvia.imsclient.configuration.service.ConfigurationService}=  {component.name=es.umu.mvia.imsclient.configuration, component.id=0, service.id=35}
    {es.umu.mvia.imsclient.netaddr.service.NetworkAddressManagerService}=   {component.name=es.umu.mvia.imsclient.netaddr, component.id=6, service.id=36}

  No exported packages
  Imported packages
    EDU.oswego.cs.dl.util.concurrent; version="0.0.0"<Concurrent_1.0.0 [16]>
    es.umu.mvia.imsclient.configuration.event; version="0.0.0"  <es.umu.imsclient.configuration_1.2.0 [5]>
    es.umu.mvia.imsclient.configuration.service; version="0.0.0"   <es.umu.imsclient.configuration_1.2.0 [5]>
    es.umu.mvia.imsclient.netaddr.service; version="0.0.0"   <es.umu.imsclient.netaddr_1.2.0 [11]>
    es.umu.mvia.imsclient.service.protocol; version="0.0.0"  <es.umu.imsclient.protocol_1.2.0 [12]>
    es.umu.mvia.imsclient.service.protocol.event; version="0.0.0"<es.umu.imsclient.protocol_1.2.0 [12]>
    es.umu.mvia.imsclient.util; version="0.0.0"<es.umu.imsclient.util_1.2.0 [14]>
    javax.net.ssl; version="0.0.0"<org.eclipse.osgi_3.6.2.R36x_v20110210 [0]>
    javax.xml.transform; version="0.0.0"<org.eclipse.osgi_3.6.2.R36x_v20110210 [0]>
    org.osgi.framework; version="1.5.0"<org.eclipse.osgi_3.6.2.R36x_v20110210 [0]>
    org.osgi.service.component; version="1.1.0"  <org.eclipse.osgi.services_3.2.100.v20100503 [28]>
    org.osgi.service.event; version="1.2.0"<org.eclipse.osgi.services_3.2.100.v20100503   [28]>
    org.osgi.util.tracker; version="1.4.2"<org.eclipse.osgi_3.6.2.R36x_v20110210 [0]>
    org.w3c.dom; version="0.0.0"<org.eclipse.osgi_3.6.2.R36x_v20110210 [0]>
  No fragment bundles
  Named class space
    es.umu.imsclient.protocol-sip-ds; bundle-version="1.0.0.qualifier"[provided]
  No required bundles
  

И вывод пакета 0 :

 ...
  Exported packages
    org.eclipse.osgi.event; version="1.0.0"[exported]
    org.eclipse.osgi.framework.console; version="1.1.0"[exported]
    org.eclipse.osgi.framework.eventmgr; version="1.2.0"[exported]
    org.eclipse.osgi.framework.log; version="1.0.0"[exported]
    org.eclipse.osgi.launch; version="1.0.0"[exported]
    org.eclipse.osgi.service.datalocation; version="1.3.0"[exported]
    org.eclipse.osgi.service.debug; version="1.2.0"[exported]
    org.eclipse.osgi.service.environment; version="1.3.0"[exported]
    org.eclipse.osgi.service.localization; version="1.1.0"[exported]
    org.eclipse.osgi.service.pluginconversion; version="1.0.0"[exported]
    org.eclipse.osgi.service.resolver; version="1.4.0"[exported]
    org.eclipse.osgi.service.runnable; version="1.1.0"[exported]
    org.eclipse.osgi.service.security; version="1.0.0"[exported]
    org.eclipse.osgi.service.urlconversion; version="1.0.0"[exported]
    org.eclipse.osgi.signedcontent; version="1.0.0"[exported]
    org.eclipse.osgi.storagemanager; version="1.0.0"[exported]
    org.eclipse.osgi.util; version="1.1.0"[exported]
    org.osgi.framework; version="1.5.0"[exported]
    org.osgi.framework.launch; version="1.0.0"[exported]
    org.osgi.framework.hooks.service; version="1.0.0"[exported]
    org.osgi.service.condpermadmin; version="1.1.0"[exported]
    org.osgi.service.framework; version="1.0.0"[exported]
    org.osgi.service.packageadmin; version="1.2.0"[exported]
    org.osgi.service.permissionadmin; version="1.2.0"[exported]
    org.osgi.service.startlevel; version="1.1.0"[exported]
    org.osgi.service.url; version="1.0.0"[exported]
    org.osgi.util.tracker; version="1.4.0"[exported]
    org.osgi.util.tracker; version="1.4.2"[exported]
    org.eclipse.core.runtime.adaptor; version="0.0.0"[exported]
    org.eclipse.core.runtime.internal.adaptor; version="0.0.0"[exported]
    org.eclipse.core.runtime.internal.stats; version="0.0.0"[exported]
    org.eclipse.osgi.baseadaptor; version="0.0.0"[exported]
    org.eclipse.osgi.baseadaptor.bundlefile; version="0.0.0"[exported]
    org.eclipse.osgi.baseadaptor.hooks; version="0.0.0"[exported]
    org.eclipse.osgi.baseadaptor.loader; version="0.0.0"[exported]
    org.eclipse.osgi.framework.adaptor; version="0.0.0"[exported]
    org.eclipse.osgi.framework.debug; version="0.0.0"[exported]
    org.eclipse.osgi.framework.internal.core; version="0.0.0"[exported]
    org.eclipse.osgi.framework.internal.protocol; version="0.0.0"[exported]
    org.eclipse.osgi.framework.internal.protocol.bundleentry; version="0.0.0"[exported]
    org.eclipse.osgi.framework.internal.protocol.bundleresource; version="0.0.0"    [exported]
    org.eclipse.osgi.framework.internal.protocol.reference; version="0.0.0"[exported]
    org.eclipse.osgi.framework.internal.reliablefile; version="0.0.0"[exported]
    org.eclipse.osgi.framework.util; version="0.0.0"[exported]
    org.eclipse.osgi.internal.baseadaptor; version="0.0.0"[exported]
    org.eclipse.osgi.internal.composite; version="0.0.0"[exported]
    org.eclipse.osgi.internal.loader; version="0.0.0"[exported]
    org.eclipse.osgi.internal.loader.buddy; version="0.0.0"[exported]
    org.eclipse.osgi.internal.module; version="0.0.0"[exported]
    org.eclipse.osgi.internal.profile; version="0.0.0"[exported]
    org.eclipse.osgi.internal.resolver; version="0.0.0"[exported]
    org.eclipse.osgi.internal.serviceregistry; version="0.0.0"[exported]
    org.eclipse.osgi.internal.permadmin; version="0.0.0"[exported]
    org.eclipse.osgi.internal.provisional.service.security; version="1.0.0"[exported]
    org.eclipse.osgi.internal.provisional.verifier; version="0.0.0"[exported]
    org.eclipse.osgi.internal.service.security; version="0.0.0"[exported]
    org.eclipse.osgi.internal.signedcontent; version="0.0.0"[exported]
    org.eclipse.osgi.service.internal.composite; version="0.0.0"[exported]
    javax.accessibility; version="0.0.0"[exported]
    javax.activation; version="0.0.0"[exported]
    javax.activity; version="0.0.0"[exported]
    javax.annotation; version="0.0.0"[exported]
    javax.annotation.processing; version="0.0.0"[exported]
    javax.crypto; version="0.0.0"[exported]
    javax.crypto.interfaces; version="0.0.0"[exported]
    javax.crypto.spec; version="0.0.0"[exported]
    javax.imageio; version="0.0.0"[exported]
    javax.imageio.event; version="0.0.0"[exported]
    javax.imageio.metadata; version="0.0.0"[exported]
    javax.imageio.plugins.bmp; version="0.0.0"[exported]
    javax.imageio.plugins.jpeg; version="0.0.0"[exported]
    javax.imageio.spi; version="0.0.0"[exported]
    javax.imageio.stream; version="0.0.0"[exported]
    javax.jws; version="0.0.0"[exported]
    javax.jws.soap; version="0.0.0"[exported]
    javax.lang.model; version="0.0.0"[exported]
    javax.lang.model.element; version="0.0.0"[exported]
    javax.lang.model.type; version="0.0.0"[exported]
    javax.lang.model.util; version="0.0.0"[exported]
    javax.management; version="0.0.0"[exported]
    javax.management.loading; version="0.0.0"[exported]
    javax.management.modelmbean; version="0.0.0"[exported]
    javax.management.monitor; version="0.0.0"[exported]
    javax.management.openmbean; version="0.0.0"[exported]
    javax.management.relation; version="0.0.0"[exported]
    javax.management.remote; version="0.0.0"[exported]
    javax.management.remote.rmi; version="0.0.0"[exported]
    javax.management.timer; version="0.0.0"[exported]
    javax.naming; version="0.0.0"[exported]
    javax.naming.directory; version="0.0.0"[exported]
    javax.naming.event; version="0.0.0"[exported]
    javax.naming.ldap; version="0.0.0"[exported]
    javax.naming.spi; version="0.0.0"[exported]
    javax.net; version="0.0.0"[exported]
    javax.net.ssl; version="0.0.0"[exported]
    javax.print; version="0.0.0"[exported]
    javax.print.attribute; version="0.0.0"[exported]
    javax.print.attribute.standard; version="0.0.0"[exported]
    javax.print.event; version="0.0.0"[exported]
    javax.rmi; version="0.0.0"[exported]
    javax.rmi.CORBA; version="0.0.0"[exported]
    javax.rmi.ssl; version="0.0.0"[exported]
    javax.script; version="0.0.0"[exported]
    javax.security.auth; version="0.0.0"[exported]
    javax.security.auth.callback; version="0.0.0"[exported]
    javax.security.auth.kerberos; version="0.0.0"[exported]
    javax.security.auth.login; version="0.0.0"[exported]
    javax.security.auth.spi; version="0.0.0"[exported]
    javax.security.auth.x500; version="0.0.0"[exported]
    javax.security.cert; version="0.0.0"[exported]
    javax.security.sasl; version="0.0.0"[exported]
    javax.sound.midi; version="0.0.0"[exported]
    javax.sound.midi.spi; version="0.0.0"[exported]
    javax.sound.sampled; version="0.0.0"[exported]
    javax.sound.sampled.spi; version="0.0.0"[exported]
    javax.sql; version="0.0.0"[exported]
    javax.sql.rowset; version="0.0.0"[exported]
    javax.sql.rowset.serial; version="0.0.0"[exported]
    javax.sql.rowset.spi; version="0.0.0"[exported]
    javax.swing; version="0.0.0"[exported]
    javax.swing.border; version="0.0.0"[exported]
    javax.swing.colorchooser; version="0.0.0"[exported]
    javax.swing.event; version="0.0.0"[exported]
    javax.swing.filechooser; version="0.0.0"[exported]
    javax.swing.plaf; version="0.0.0"[exported]
    javax.swing.plaf.basic; version="0.0.0"[exported]
    javax.swing.plaf.metal; version="0.0.0"[exported]
    javax.swing.plaf.multi; version="0.0.0"[exported]
    javax.swing.plaf.synth; version="0.0.0"[exported]
    javax.swing.table; version="0.0.0"[exported]
    javax.swing.text; version="0.0.0"[exported]
    javax.swing.text.html; version="0.0.0"[exported]
    javax.swing.text.html.parser; version="0.0.0"[exported]
    javax.swing.text.rtf; version="0.0.0"[exported]
    javax.swing.tree; version="0.0.0"[exported]
    javax.swing.undo; version="0.0.0"[exported]
    javax.tools; version="0.0.0"[exported]
    javax.transaction; version="0.0.0"[exported]
    javax.transaction.xa; version="0.0.0"[exported]
    javax.xml; version="0.0.0"[exported]
    javax.xml.bind; version="0.0.0"[exported]
    javax.xml.bind.annotation; version="0.0.0"[exported]
    javax.xml.bind.annotation.adapters; version="0.0.0"[exported]
    javax.xml.bind.attachment; version="0.0.0"[exported]
    javax.xml.bind.helpers; version="0.0.0"[exported]
    javax.xml.bind.util; version="0.0.0"[exported]
    javax.xml.crypto; version="0.0.0"[exported]
    javax.xml.crypto.dom; version="0.0.0"[exported]
    javax.xml.crypto.dsig; version="0.0.0"[exported]
    javax.xml.crypto.dsig.dom; version="0.0.0"[exported]
    javax.xml.crypto.dsig.keyinfo; version="0.0.0"[exported]
    javax.xml.crypto.dsig.spec; version="0.0.0"[exported]
    javax.xml.datatype; version="0.0.0"[exported]
    javax.xml.namespace; version="0.0.0"[exported]
    javax.xml.parsers; version="0.0.0"[exported]
    javax.xml.soap; version="0.0.0"[exported]
    javax.xml.stream; version="0.0.0"[exported]
    javax.xml.stream.events; version="0.0.0"[exported]
    javax.xml.stream.util; version="0.0.0"[exported]
    javax.xml.transform; version="0.0.0"[exported]
    javax.xml.transform.dom; version="0.0.0"[exported]
    javax.xml.transform.sax; version="0.0.0"[exported]
    javax.xml.transform.stax; version="0.0.0"[exported]
    javax.xml.transform.stream; version="0.0.0"[exported]
    javax.xml.validation; version="0.0.0"[exported]
    javax.xml.ws; version="0.0.0"[exported]
    javax.xml.ws.handler; version="0.0.0"[exported]
    javax.xml.ws.handler.soap; version="0.0.0"[exported]
    javax.xml.ws.http; version="0.0.0"[exported]
    javax.xml.ws.soap; version="0.0.0"[exported]
    javax.xml.ws.spi; version="0.0.0"[exported]
    javax.xml.ws.wsaddressing; version="0.0.0"[exported]
    javax.xml.xpath; version="0.0.0"[exported]
    org.ietf.jgss; version="0.0.0"[exported]
    org.omg.CORBA; version="0.0.0"[exported]
    org.omg.CORBA_2_3; version="0.0.0"[exported]
    org.omg.CORBA_2_3.portable; version="0.0.0"[exported]
    org.omg.CORBA.DynAnyPackage; version="0.0.0"[exported]
    org.omg.CORBA.ORBPackage; version="0.0.0"[exported]
    org.omg.CORBA.portable; version="0.0.0"[exported]
    org.omg.CORBA.TypeCodePackage; version="0.0.0"[exported]
    org.omg.CosNaming; version="0.0.0"[exported]
    org.omg.CosNaming.NamingContextExtPackage; version="0.0.0"[exported]
    org.omg.CosNaming.NamingContextPackage; version="0.0.0"[exported]
    org.omg.Dynamic; version="0.0.0"[exported]
    org.omg.DynamicAny; version="0.0.0"[exported]
    org.omg.DynamicAny.DynAnyFactoryPackage; version="0.0.0"[exported]
    org.omg.DynamicAny.DynAnyPackage; version="0.0.0"[exported]
    org.omg.IOP; version="0.0.0"[exported]
    org.omg.IOP.CodecFactoryPackage; version="0.0.0"[exported]
    org.omg.IOP.CodecPackage; version="0.0.0"[exported]
    org.omg.Messaging; version="0.0.0"[exported]
    org.omg.PortableInterceptor; version="0.0.0"[exported]
    org.omg.PortableInterceptor.ORBInitInfoPackage; version="0.0.0"[exported]
    org.omg.PortableServer; version="0.0.0"[exported]
    org.omg.PortableServer.CurrentPackage; version="0.0.0"[exported]
    org.omg.PortableServer.POAManagerPackage; version="0.0.0"[exported]
    org.omg.PortableServer.POAPackage; version="0.0.0"[exported]
    org.omg.PortableServer.portable; version="0.0.0"[exported]
    org.omg.PortableServer.ServantLocatorPackage; version="0.0.0"[exported]
    org.omg.SendingContext; version="0.0.0"[exported]
    org.omg.stub.java.rmi; version="0.0.0"[exported]
    org.w3c.dom; version="0.0.0"[exported]
    org.w3c.dom.bootstrap; version="0.0.0"[exported]
    org.w3c.dom.css; version="0.0.0"[exported]
    org.w3c.dom.events; version="0.0.0"[exported]
    org.w3c.dom.html; version="0.0.0"[exported]
    org.w3c.dom.ls; version="0.0.0"[exported]
    org.w3c.dom.ranges; version="0.0.0"[exported]
    org.w3c.dom.stylesheets; version="0.0.0"[exported]
    org.w3c.dom.traversal; version="0.0.0"[exported]
    org.w3c.dom.views; version="0.0.0"[exported]
    org.w3c.dom.xpath; version="0.0.0"[exported]
    org.xml.sax; version="0.0.0"[exported]
    org.xml.sax.ext; version="0.0.0"[exported]
    org.xml.sax.helpers; version="0.0.0"[exported]
  No imported packages
  No fragment bundles
  Named class space
    org.eclipse.osgi; bundle-version="3.6.2.R36x_v20110210"[provided]
  No required bundles
  

Здесь трассировка стека:

 Caused by: java.lang.NoClassDefFoundError: org/w3c/dom/Node
    at es.umu.mvia.imsclient.impl.protocol.sip.OperationSetPresenceSipImpl.<init>  (OperationSetPresenceSipImpl.java:150)
    at es.umu.mvia.imsclient.impl.protocol.sip.ProtocolProviderServiceSipImpl.initialize(ProtocolPr oviderServiceSipImpl.java:951)
    at es.umu.mvia.imsclient.impl.protocol.sip.ProtocolProviderFactorySipImpl.loadAccount(ProtocolProviderFactorySipImpl.java:222)
    at es.umu.mvia.imsclient.impl.protocol.sip.ProtocolProviderFactorySipImpl.installAccount(ProtocolProviderFactorySipImpl.java:159)
    at es.umu.mvia.imsclient.impl.protocol.sip.ProtocolSipDS.installAccount(ProtocolSipDS.java:103)
    at es.umu.mvia.imsclient.ims.configuration.impl.IMSConfigurationServiceImpl.newAccount(IMSConfigurationServiceImpl.java:170)
    at es.umu.mvia.imsclient.ims.configuration.IMSConfiguration.newAccount(IMSConfiguration.java:78 )
    at es.umu.imsclient.shuttle.IMSClientShuttle.activate(IMSClientShuttle.java:33)
    ... 54 more
Caused by: java.lang.ClassNotFoundException: org.w3c.dom.Node
    at org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:506)
    at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:422)
    at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:410)
    at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.loadClass(DefaultClassLoader.java:107)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    ... 62 more
  

Комментарии:

1. В osgi> приглашении, пожалуйста, введите bundle <id> , где <id> — числовой идентификатор этого пакета, как показано в крайнем левом столбце при вводе ss . Затем, пожалуйста, загляните в раздел «Импортированные пакеты» и вставьте вывод сюда. Я подозреваю, что кто-то, кроме системного пакета, также экспортирует org.w3c.dom , и это может быть его неполная копия…

2. Теперь вы можете проверить, что вы просили. Я отредактировал вопрос.

3. @amoragon Импорт пакета кажется правильным, т. Е. Он поступает из системного пакета. Единственное, о чем я могу думать дальше, это то, что исключение генерируется каким-то другим пакетом, то есть не тем, детали которого вы указали выше. Возможно ли выполнить отладку именно там, откуда генерируется исключение?

4. Выходные bundle данные команд выглядят нормально. Пожалуйста, приложите полную NoClassDefFoundError трассировку стека исключения.

5. Итак, является ли класс es.umu.mvia.imsclient.impl.protocol.sip.OperationSetPresenceSipImpl членом пакета es.umu.imsclient.protocol-sip-ds ?

Ответ №1:

Вы также импортировали org.w3c.dom в манифест?

Комментарии:

1. Да, вы можете увидеть приведенный выше МАНИФЕСТ.

Ответ №2:

В командной строке я запустил команду getprop, и этот класс указан в свойстве org.osgi.framework.system.packages .

Вы должны добавить пакет класса (например org.w3c.dom ), а не class ( org.w3c.dom.Node ) в свойство org.osgi.framework.system.packages or org.osgi.framework.system.packages.extra .


Другая идея: выполните поиск во всех ваших проектах для org.w3c.dom.Node использования и убедитесь, что каждый пакет, использующий этот класс, импортирует свой пакет в манифест. Я предполагаю, что вы OperationSetPresenceSipImpl используете класс из другого пакета, который также необходим org.w3c.dom.Node . Возможно, сторонняя библиотека также использует Node класс в другом пакете.

В чем разница между ClassNotFoundException и NoClassDefFoundError?

Комментарии:

1. Я добавил пакет org.w3c.dom в МАНИФЕСТ потребителя, чтобы получить org.w3c.dom. Класс узла. И этот пакет (org.w3c.dom) отображается в списке при запуске getprop . Итак, я полагаю, org.w3c.dom. Узел экспортируется фреймворком, не так ли?

2. Да, он экспортируется. Покажите результаты bundle 0 и bundle <yourbundleId> , как также предложил @Neil Bartlett.

3. Я искал по всему рабочему пространству, искал org.w3c.dom.Node и нашел его еще в 3 пакетах, и импорт, похоже, в порядке, так же, как и этот. Есть ли способ избежать импорта org.w3c.dom.Node из фреймворка? Моя идея — экспортировать org.w3c.dom из другого пакета.

4. Если вы проверите вывод bundle команды для других 3 пакетов, они также показывают, что они хорошо подключены? (например, ` org.w3c.dom; version=»0.0.0″<org.eclipse.osgi_3.6.2.R36x_v20110210 [0]>`)

5. Да, они также подключены к org.eclipse.osgi_3.6.2.R36x_v20110210 [0]