Как я могу найти основную причину проблемы с классом, не найденным в OSGi?

Я хочу попробовать несколько шагов, чтобы исправить проблему ClassNotFound. Я использую Equinox/OSGI. Например, я получаю

   java.lang.ClassNotFoundException: org.wso2.carbon.tomcat.ext.servlet.DelegationServlet
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1714)
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1559)
    at org.apache.catalina.core.DefaultInstanceManager.loadClass(DefaultInstanceManager.java:532)
    at org.apache.catalina.core.DefaultInstanceManager.loadClassMaybePrivileged(DefaultInstanceManager.java:514)
    at org.apache.catalina.core.DefaultInstanceManager.newInstance(DefaultInstanceManager.java:133)

Я пробовал команды ss, ls -c, diag, b... но не смог найти никакой полезной информации. Я помещаю вывод этих команд..

Может ли кто-нибудь сообщить мне, как я могу решить такие проблемы с OSgi и как я могу выяснить основную причину таких проблем.

#osgi> p org.wso2.carbon.tomcat.ext.servlet
org.wso2.carbon.tomcat.ext.servlet; version="4.2.0"<org.wso2.carbon.tomcat.ext_4.2.0 [421]>

#osgi> diag 421
reference:file:../plugins/org.wso2.carbon.tomcat.ext_4.2.0.jar [421]
  No unresolved constraints.

#osgi> b 421
org.wso2.carbon.tomcat.ext_4.2.0 [421]
  Id=421, Status=ACTIVE      Data Root=C:\Projects\scartch\chunk13\08_07_new\wso2am-1.7.1\repository\components\default\configuration\org.eclipse.osgi
\bundles\421\data
  "No registered services."
  Services in use:
    {org.wso2.carbon.user.core.service.RealmService, org.wso2.carbon.user.api.UserRealmService}={service.id=136}
    {org.wso2.carbon.tomcat.api.CarbonTomcatService}={service.id=130}
    {org.wso2.carbon.base.api.ServerConfigurationService}={service.id=103}
    {org.wso2.carbon.registry.core.service.RegistryService, org.wso2.carbon.registry.api.RegistryService}={service.id=143}
  Exported packages
    org.wso2.carbon.tomcat.ext.service; version="4.2.0"[exported]
    org.wso2.carbon.tomcat.ext.scan; version="4.2.0"[exported]
    org.wso2.carbon.tomcat.ext.valves; version="4.2.0"[exported]
    org.wso2.carbon.tomcat.ext.saas; version="4.2.0"[exported]
    org.wso2.carbon.tomcat.ext.utils; version="4.2.0"[exported]
    org.wso2.carbon.tomcat.ext.filter; version="4.2.0"[exported]
    org.wso2.carbon.tomcat.ext.realms; version="4.2.0"[exported]
    org.wso2.carbon.tomcat.ext.transport; version="4.2.0"[exported]
    org.wso2.carbon.tomcat.ext.servlet; version="4.2.0"[exported]
    org.wso2.carbon.tomcat.ext.transport.statistics; version="4.2.0"[exported]
  Imported packages
    org.wso2.carbon.utils.multitenancy; version="4.2.0"<org.wso2.carbon.utils_4.2.0 [454]>
    org.wso2.carbon.utils; version="4.2.0"<org.wso2.carbon.utils_4.2.0 [454]>
    org.wso2.carbon.user.core.tenant; version="4.2.0"<org.wso2.carbon.user.core_4.2.0 [449]>
    org.wso2.carbon.user.core.service; version="4.2.0"<org.wso2.carbon.user.core_4.2.0 [449]>
    org.wso2.carbon.user.api; version="1.0.1"<org.wso2.carbon.user.api_4.2.0 [448]>
    org.wso2.carbon.tomcat.api; version="4.2.0"<org.wso2.carbon.tomcat_4.2.0 [420]>
    org.wso2.carbon.tomcat; version="4.2.0"<org.wso2.carbon.tomcat_4.2.0 [420]>
    org.wso2.carbon.registry.core.service; version="1.0.1"<org.wso2.carbon.registry.core_4.2.0 [344]>
    org.wso2.carbon.registry.core.ghostregistry; version="1.0.1"<org.wso2.carbon.registry.core_4.2.0 [344]>
    org.wso2.carbon.registry.api; version="1.0.1"<org.wso2.carbon.registry.api_4.2.0 [341]>
    org.wso2.carbon.core.session; version="4.2.0"<org.wso2.carbon.core_4.2.0 [197]>
    org.wso2.carbon.core; version="4.2.0"<org.wso2.carbon.core_4.2.0 [197]>
    org.wso2.carbon.context; version="4.2.0"<org.wso2.carbon.utils_4.2.0 [454]>
    org.wso2.carbon.base.api; version="1.0.0"<org.wso2.carbon.base_4.2.0 [189]>
    org.wso2.carbon.base; version="1.0.0"<org.wso2.carbon.base_4.2.0 [189]>
    org.osgi.service.component; version="1.2.0"<org.eclipse.osgi.services_3.3.100.v20120522-1822 [132]>
    org.eclipse.osgi.framework.adaptor; version="0.0.0"<org.eclipse.osgi_3.8.1.v20120830-144521 [0]>
    org.eclipse.equinox.http.servlet; version="1.1.0"<org.eclipse.equinox.http.servlet_1.1.300.v20120522-1841 [102]>
    org.apache.tomcat.util.scan; version="1.7.0"<tomcat_7.0.34.wso2v1 [494]>
    org.apache.tomcat.util.res; version="1.7.0"<tomcat_7.0.34.wso2v1 [494]>
    org.apache.tomcat.util.file; version="1.7.0"<tomcat_7.0.34.wso2v1 [494]>
    org.apache.tomcat; version="1.7.0"<tomcat_7.0.34.wso2v1 [494]>
    org.apache.juli.logging; version="7.0.34"<tribes_7.0.34.wso2v1 [496]>
    org.apache.coyote; version="1.7.0"<org.wso2.carbon.tomcat.patch_4.2.0 [423]>
    org.apache.commons.logging; version="1.1.1"<org.wso2.carbon.logging_4.2.0 [287]>
    org.apache.catalina.valves; version="1.7.0"<tomcat_7.0.34.wso2v1 [494]>
    org.apache.catalina.startup; version="1.7.0"<tomcat_7.0.34.wso2v1 [494]>
    org.apache.catalina.realm; version="1.7.0"<tomcat_7.0.34.wso2v1 [494]>
    org.apache.catalina.ha; version="1.7.0"<tomcat-ha_7.0.34.wso2v1 [495]>
    org.apache.catalina.core; version="1.7.0"<tomcat_7.0.34.wso2v1 [494]>
    org.apache.catalina.connector; version="1.7.0"<tomcat_7.0.34.wso2v1 [494]>
    org.apache.catalina; version="1.7.0"<tomcat_7.0.34.wso2v1 [494]>
    org.apache.axis2.clustering; version="1.6.1.wso2v10"<axis2_1.6.1.wso2v10 [13]>
    javax.servlet.http; version="2.6.0"<javax.servlet_3.0.0.v201112011016 [57]>
    javax.servlet; version="2.6.0"<javax.servlet_3.0.0.v201112011016 [57]>
  No fragment bundles
  Named class space
    org.wso2.carbon.tomcat.ext; bundle-version="4.2.0"[provided]
  No required bundles


#osgi> ls -c 421
Components in bundle org.wso2.carbon.tomcat.ext:
ID      Component details
139     Component[
        name = tomcat.ext.service.comp
        factory = null
        autoenable = true
        immediate = true
        implementation = org.wso2.carbon.tomcat.ext.internal.CarbonRealmServiceComponent
        state = Unsatisfied
        properties = {service.pid=tomcat.ext.service.comp}
        serviceFactory = false
        serviceInterface = null
        references = {
                Reference[name = user.realm.provider, interface = org.wso2.carbon.user.core.service.RealmService, policy = dynamic, cardinality = 1..1
, target = null, bind = setRealmService, unbind = unsetRealmService]
                Reference[name = registry.service.provider, interface = org.wso2.carbon.registry.core.service.RegistryService, policy = dynamic, cardi
nality = 1..1, target = null, bind = setRegistryService, unbind = unsetRegistryService]
        }
        located in bundle = org.wso2.carbon.tomcat.ext_4.2.0 [421]
]
Dynamic information :
  The component is satisfied
  All component references are satisfied
  Component configurations :
    Configuration properties:
      service.pid = tomcat.ext.service.comp
      component.name = tomcat.ext.service.comp
      component.id = 138
    Instances:
      org.eclipse.equinox.internal.ds.impl.ComponentInstanceImpl@68c19d85
        Bound References:
        String[org.wso2.carbon.registry.core.service.RegistryService,org.wso2.carbon.registry.api.RegistryService]
                -> org.wso2.carbon.registry.core.jdbc.EmbeddedRegistryService@7f4cbc7d
        String[org.wso2.carbon.user.core.service.RealmService,org.wso2.carbon.user.api.UserRealmService]
                -> org.wso2.carbon.user.core.common.DefaultRealmService@6eaf3d6

140     Component[
        name = tomcat.service.comp
        factory = null
        autoenable = true
        immediate = true
        implementation = org.wso2.carbon.tomcat.ext.internal.CarbonTomcatServiceComponent
        state = Unsatisfied
        properties = {service.pid=tomcat.service.comp}
        serviceFactory = false
        serviceInterface = null
        references = {
                Reference[name = server.configuration.service, interface = org.wso2.carbon.base.api.ServerConfigurationService, policy = dynamic, card
inality = 1..1, target = null, bind = setServerConfigurationService, unbind = unsetServerConfigurationService]
                Reference[name = tomcat.service.provider, interface = org.wso2.carbon.tomcat.api.CarbonTomcatService, policy = dynamic, cardinality =
1..1, target = null, bind = setCarbonTomcatService, unbind = unsetCarbonTomcatService]
        }
        located in bundle = org.wso2.carbon.tomcat.ext_4.2.0 [421]
]
Dynamic information :
  The component is satisfied
  All component references are satisfied
  Component configurations :
    Configuration properties:
      service.pid = tomcat.service.comp
      component.name = tomcat.service.comp
      component.id = 139
    Instances:
      org.eclipse.equinox.internal.ds.impl.ComponentInstanceImpl@2b2e6a26
        Bound References:
        String[org.wso2.carbon.base.api.ServerConfigurationService]
                -> org.wso2.carbon.base.ServerConfiguration@4c309c86
        String[org.wso2.carbon.tomcat.api.CarbonTomcatService]
                -> org.wso2.carbon.tomcat.internal.CarbonTomcat@b74487e

person Ratha    schedule 09.07.2014    source источник


Ответы (1)


Вы диагностировали подключаемый модуль, предоставляющий класс. Взгляд на запросчика также может помочь.

В общем, устранение неполадок с загрузкой классов OSGi затруднено. Несовместимые версии библиотек и дублированные библиотеки являются наиболее распространенными причинами ClassNotFoundException. Таким образом, поиск изменений конфигурации во время сбоя может дать вам некоторые подсказки.

Завершена ли трассировка стека? Если нет, вы можете вставить весь стек, может помочь.

person Pawel Pogorzelski    schedule 12.07.2014