OSGI 中的 Restlet 找不到 com/sun/net/httpserver/HttpHandler

Restlet in OSGI can not find com/sun/net/httpserver/HttpHandler

我正在尝试在嵌入式 OSGi 环境中使用 Restlet。我在捆绑的 restlet 测试的 class 路径中添加了 org.restlet.jar 版本 2.3.0。但它一直给我以下错误。

java.lang.NoClassDefFoundError: com/sun/net/httpserver/HttpHandler

文档说这个 jar 应该足够了,但目前无法正常工作。该捆绑包由 Equinox Framework 启动,该框架由独立启动器启动,稍后可在 Eclipse 环境之外使用。

我应该添加另一个 jar fie 以获得正确的服务器连接器吗?我不会使用 servlet,因此 Restlet 连接器是唯一的选择。

当我手动启动包时,我收到以下警告:

WARNING: No available server connector supports the required protocols: 'HTTP' . Please add the JAR of a matching connector to your classpath.

我已经花了很多时间让它工作,但运气不好。提前致谢!

我在 here 发布的答案中找到了解决方案。

所以包 com.sun.net.httpserver(它是 JDK 的一部分)需要暴露给 OSGi 环境。对我有用的最佳解决方案是在框架启动期间通过系统包公开它,方法是将它添加到以下 属性:

org.osgi.framework.system.packages.extra = com.sun.net.httpserver

如果您在使用自定义框架启动器的 OSGi 环境中使用 Restlet,添加上述解决方案将使包可用于导入。我认为他们应该在他们的文档中添加这些信息。当Restlet 安装在Eclipse 中并在使用Eclipse 启动器的Eclipse 环境中直接使用时,不会出现此问题,因为我认为配置会自动设置。