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

时间:2015-01-28 13:20:26

标签: java osgi restlet restlet-2.0

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

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.

我已经花了很多时间让它没有运气。提前谢谢!

1 个答案:

答案 0 :(得分:3)

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

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

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

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