RestLet: An exception occured writing the response entity
我刚刚开始创建我的第一个restlet应用程序。我遵循了restlet第一步教程。我已经完全按照规定创建了所有文件,并且在运行该文件时服务器运行正常,但是当我通过邮递员致电我的服务时,出现以下错误:
错误:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | 2015-04-20 20:39:53 0:0:0:0:0:0:0:1 - - 8182 GET /firstSteps/hello - 200 12 0 156 http://localhost:8182 Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.90 Safari/537.36 - An exception occured writing the response entity java.lang.ClassCastException: org.restlet.data.Header cannot be cast to org.restlet.engine.header.Header at org.restlet.ext.simple.internal.SimpleCall.writeResponseHead(SimpleCall.java:304) at org.restlet.engine.adapter.ServerCall.sendResponse(ServerCall.java:450) at org.restlet.engine.adapter.ServerAdapter.commit(ServerAdapter.java:187) at org.restlet.engine.adapter.HttpServerHelper.handle(HttpServerHelper.java:144) at org.restlet.ext.simple.internal.SimpleContainer.handle(SimpleContainer.java:80) at org.simpleframework.http.core.Dispatcher.dispatch(Dispatcher.java:121) at org.simpleframework.http.core.Dispatcher.run(Dispatcher.java:103) at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) at java.lang.Thread.run(Unknown Source) Error while handling an HTTP server call |
这是我的代码:
Helloworld类别:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | package smartRoom; import org.restlet.resource.Get; import org.restlet.resource.ServerResource; /** * Resource which has only one representation. */ public class Helloworld extends ServerResource { @Get public String represent() { return"hello, world"; } } |
这是我的应用程序类:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 | package smartRoom; import org.restlet.Application; import org.restlet.Component; import org.restlet.Restlet; import org.restlet.data.Protocol; import org.restlet.routing.Router; public class HelloworldAppilcation extends Application { public static void main(String[] args) throws Exception { // Create a new Component. Component component = new Component(); // Add a new HTTP server listening on port 8182. component.getServers().add(Protocol.HTTP, 8182); // Attach the sample application. component.getDefaultHost().attach("/firstSteps", new HelloworldAppilcation()); // Start the component. component.start(); } /** * Creates a root Restlet that will receive all incoming calls. */ @Override public synchronized Restlet createInboundRoot() { // Create a router Restlet that routes each call to a new instance of HelloWorldResource. Router router = new Router(getContext()); // Defines only one route router.attach("/hello", Helloworld.class); return router; } } |
我无法在线找到有关此错误的任何内容。我按照发球台的指示从头开始重新创建了项目,但仍然遇到相同的错误。我不确定自己做错了什么,将不胜感激。
更新
是的,我可以确认端口已打开并且正在监听
更新两个
http://restlet.com/technical-resources/restlet-framework/guide/2.2/editions/jse/overview
我现在也尝试了maven教程,并得到了相同的结果。
更新三个
我今天又尝试了一下,从头开始重新下载了所有内容,这次运行正常。不能完全确定问题出在哪里,但最有可能与使用restlet版本有关。
我建议您将2.3版本的Restlet与服务器连接器(如Jetty)一起使用(在类路径中添加扩展名org.restlet.ext.jetty)。
据我所知,您做了正确的事情以使用Restlet实现入门应用程序。
您能给我们您使用的Restlet的确切版本吗?
以下是文件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 | <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>org.restlet</groupId> restlet-starter</artifactId> <name>${project.artifactId}</name> <packaging>jar</packaging> <version>1.0.0-snapshot</version> <properties> <restlet-version>2.3.1</restlet-version> </properties> <dependencies> <dependency> <groupId>org.restlet.jse</groupId> org.restlet</artifactId> <version>${restlet-version}</version> </dependency> <dependency> <groupId>org.restlet.jse</groupId> org.restlet.ext.jetty</artifactId> <version>${restlet-version}</version> </dependency> </dependencies> <repositories> <repository> <id>maven-restlet</id> <name>Public online Restlet repository</name> <url>http://maven.restlet.com</url> </repository> </repositories> </project> |
希望它对您有帮助,
蒂埃里
对我来说,在我按照建议将扩展org.restlet.ext.jetty添加到classpath后,它起作用了。顺便说一句,我用Gradle构建项目。