为了使用 Endpoint 通过 SSL 进行发布,我需要访问包下的类com.sun.net.httpserver.*
通过使用 Eclipse IDE,我找到了一种使用此类的方法。但是导出捆绑包并在另一个春分 OSGi 安装中运行它们我无法启动捆绑包并抛出以下错误:
java.lang.NoClassDefFoundError: com/sun/net/httpserver/HttpsConfigurator
有人知道如何解决这个问题吗?
Thanks!
您所指的包是 JDK 的一部分。您需要公开它,使其在 OSGi 中可用,您有两个选择:
第一个(在大多数情况下也是首选)选项是通过系统捆绑包公开此包。 OSGi 框架有一个属性,您可以设置它来执行此操作:
org.osgi.framework.system.packages.extra=...
作为它的值,您可以为其提供一个以逗号分隔的要公开的包列表,位于框架已公开的包之上。就您而言,至少需要 com.sun.net.httpserver,但您可能还需要更多软件包。在这种情况下,还要确保使用此包的捆绑包导入此包。
第二个选项是使用引导委托机制。它只能作为最后的手段使用,因为它破坏了模块化,如果使用不小心,可能会导致其他问题。同样,这是您需要设置的属性:
org.osgi.framework.bootdelegation=*
在这里,您可以提供应由引导类加载器加载的逗号分隔的包列表。支持通配符(如上例所示),但鼓励您尽可能具体,因此在您的情况下,请使用 com.sun.* 作为值。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)