解决方案 »

  1.   

    依赖写得不对吧? 你的manifest文件怎么写的?
      

  2.   


    开始是将httpServer  置于equinox框架中,在eclispe中run as osgi framework,用默认的80端口访问,可以。
    第二种方式 将项目的bundle做成war包以Servlet Bridge方式部署到servlet容器中。
    manifest文件配置如下:Manifest-Version: 1.0
    Bundle-ManifestVersion: 2
    Bundle-Name: Declarative
    Bundle-SymbolicName: com.scorpio.osgi.web.declarative;singleton:=true
    Bundle-Version: 1.0.0.qualifier
    Bundle-Vendor: SCORPIO
    Bundle-RequiredExecutionEnvironment: JavaSE-1.6
    Import-Package: javax.servlet;version="2.6.0",
     javax.servlet.http;version="2.6.0"
    Require-Bundle: org.eclipse.equinox.http.registry;bundle-version="1.1.300"bridge web.xml配置如下:<?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.2//EN" "http://java.sun.com/j2ee/dtds/web-app_2_2.dtd">
    <web-app id="WebApp">
    <servlet id="bridge">
    <servlet-name>equinoxbridgeservlet</servlet-name>
    <display-name>Equinox Bridge Servlet</display-name>
    <description>Equinox Bridge Servlet</description>
    <servlet-class>org.eclipse.equinox.servletbridge.BridgeServlet</servlet-class>
    <init-param>
    <param-name>commandline</param-name>
    <param-value>-console</param-value>
    </init-param>
    <init-param>
    <param-name>enableFrameworkControls</param-name>
    <param-value>true</param-value>
    </init-param>
    <init-param>
    <param-name>extendedFrameworkExports</param-name>
    <param-value></param-value>
    </init-param> <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
    <servlet-name>equinoxbridgeservlet</servlet-name>
    <url-pattern>/*</url-pattern>
    </servlet-mapping>
    <servlet-mapping>
    <servlet-name>equinoxbridgeservlet</servlet-name>
    <url-pattern>*.jsp</url-pattern>
    </servlet-mapping>
    </web-app>
      

  3.   

    打开loader日志,从日志就可以看出是哪个bundle找不到这个类,然后调整下依赖关系就行