我想在Android手机上托管一个简单的休息服务器,以便远程访问某些数据。 我按照restlet网站上的描述进行了操作,但我甚至无法运行一个简单的示例。
我下载了android restlet包并添加了org.restlet.jar作为依赖。
在我的onCreate
活动方法中,我添加了这些行来启动一个简单的服务器组件。
Component serverComponent = new Component();
serverComponent.getServers().add(Protocol.HTTP, 80);
final Router router = new Router(serverComponent.getContext().createChildContext());
router.attach("/gamedata", GameDataResourceServer.class);
serverComponent.getDefaultHost().attach(router);
serverComponent.start();
最后一次调用抛出异常:
05-20 11:06:14.040 29947-29947 / com.example.restserver E / AndroidRuntime:致命异常:主要 处理:com.example.restserver,PID:29947 java.lang.NoClassDefFoundError:com.sun.net.httpserver.HttpServer 在org.restlet.engine.connector.HttpServerHelper.start(HttpServerHelper.java:68) ...
为什么restlet框架尝试使用java中的httpserver。这不是我认为的Android框架的一部分。
P.S。:我发现,这个问题仅在重新安装2.2后出现。 2.1分支对我有用。
答案 0 :(得分:1)
Restlet的Android版本不应该基于com.sun.net提供此内部HTTP服务器,因为此类在Android上不可用,仅适用于Java SE / EE。
2.1版中使用的上一个内部HTTP服务器已移至org.restlet.ext.nio扩展名。如果你做了适当的声明,你仍然可以在2.2版本中使用它。