RestLet:写入响应实体时发生异常
RestLet: An exception occured writing the response entity
我刚刚开始创建我的第一个 restlet 应用程序。我遵循了 restlet 第一步教程。我已经完全按照说明创建了所有文件,当我 运行 时服务器 运行 完美无缺,但是当我通过邮递员调用我的服务时,我收到此错误:
错误:
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
这是我的代码:
地狱世界Class:
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";
}
}
这是我的申请 class:
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 的确切版本吗?
这是文件示例 pom.xml
,您可以尝试在您的应用程序中使用:
<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>
<artifactId>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>
<artifactId>org.restlet</artifactId>
<version>${restlet-version}</version>
</dependency>
<dependency>
<groupId>org.restlet.jse</groupId>
<artifactId>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 添加到类路径后,它就起作用了。顺便说一句,我用 Gradle 来构建项目。
我刚刚开始创建我的第一个 restlet 应用程序。我遵循了 restlet 第一步教程。我已经完全按照说明创建了所有文件,当我 运行 时服务器 运行 完美无缺,但是当我通过邮递员调用我的服务时,我收到此错误:
错误:
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
这是我的代码:
地狱世界Class:
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";
}
}
这是我的申请 class:
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 的确切版本吗?
这是文件示例 pom.xml
,您可以尝试在您的应用程序中使用:
<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>
<artifactId>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>
<artifactId>org.restlet</artifactId>
<version>${restlet-version}</version>
</dependency>
<dependency>
<groupId>org.restlet.jse</groupId>
<artifactId>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 添加到类路径后,它就起作用了。顺便说一句,我用 Gradle 来构建项目。