要使用端点使用SSL发布,我需要访问包com.sun.net.httpserver.*
使用Eclipse IDE我找到了一种使用这个类的方法。但导出捆绑并在另一个equinox OSGi安装中运行它我无法启动捆绑抛出以下错误:
java.lang.NoClassDefFoundError: com/sun/net/httpserver/HttpsConfigurator
任何人都有想法如何解决这个问题?
谢谢!
答案 0 :(得分:6)
您所指的包是JDK的一部分。您需要公开它,使其在OSGi中可用,您有两个选择:
第一个,在大多数情况下是首选选项,是通过系统包公开此包。 OSGi框架有一个属性,您可以设置为执行此操作:
org.osgi.framework.system.packages.extra=...
作为其值,您可以在框架已公开的包之外为其提供以逗号分隔的包列表。在您的情况下,至少com.sun.net.httpserver,但可能有更多的包需要。在这种情况下,还要确保使用此软件包的软件包导入此软件包。
第二种选择是使用一种使用引导委派的机制。它应该只作为最后的手段,因为它打破了模块化,如果不仔细使用它可能会导致其他问题。同样,这是您需要设置的属性:
org.osgi.framework.bootdelegation=*
在这里,您可以提供一个以逗号分隔的包列表,这些包应该由引导类加载器加载。支持通配符(如上例所示),但我们鼓励您尽可能具体,因此在您的情况下,例如使用com.sun。*作为值。