目录
错误一:java.lang.IllegalArgumentException: Path must start with '/'
错误一:java.lang.IllegalArgumentException: Path must start with '/'
java.lang.IllegalArgumentException: Path must start with '/'
at javax.websocket.server.ServerEndpointConfig$Builder.<init>(ServerEndpointConfig.java:87) ~[tomcat-embed-websocket-9.0.70.jar:1.1.FR]
at javax.websocket.server.ServerEndpointConfig$Builder.create(ServerEndpointConfig.java:59) ~[tomcat-embed-websocket-9.0.70.jar:1.1.FR]
at org.apache.tomcat.websocket.server.WsServerContainer.addEndpoint(WsServerContainer.java:270) ~[tomcat-embed-websocket-9.0.70.jar:9.0.70]
at org.apache.tomcat.websocket.server.WsServerContainer.addEndpoint(WsServerContainer.java:231)
错误截图:
错误原因:
@ServerEndpoint注解中的路径必须加斜杆("/websocker/order/{userId}")
错误二:A parameter of type [class java.lang.String] was found on method[onError] of class [java.lang.reflect.Method] that did not have a @PathParam annotation
java.lang.IllegalStateException: Failed to register @ServerEndpoint class: class com.example.selforder.controller.WebSocketServer
at org.springframework.web.socket.server.standard.ServerEndpointExporter.registerEndpoint(ServerEndpointExporter.java:159) ~[spring-websocket-5.3.24.jar:5.3.24]
at org.springframework.web.socket.server.standard.ServerEndpointExporter.registerEndpoints(ServerEndpointExporter.java:134) ~[spring-websocket-5.3.24.jar:5.3.24]
at org.springframework.web.socket.server.standard.ServerEndpointExporter.afterSingletonsInstantiated(ServerEndpointExporter.java:112) ~[spring-websocket-5.3.24.jar:5.3.24]
Caused by: javax.websocket.DeploymentException: A parameter of type [class java.lang.String] was found on method[onError] of class [java.lang.reflect.Method] that did not have a @PathParam annotation
at org.apache.tomcat.websocket.pojo.PojoMethodMapping.getPathParams(PojoMethodMapping.java:347) ~[tomcat-embed-websocket-9.0.70.jar:9.0.70]
at org.apache.tomcat.websocket.pojo.PojoMethodMapping.<init>(PojoMethodMapping.java:223) ~[tomcat-embed-websocket-9.0.70.jar:9.0.70]
at org.apache.tomcat.websocket.server.WsServerContainer.addEndpoint(WsServerContainer.java:157) ~[tomcat-embed-websocket-9.0.70.jar:9.0.70]
at org.apache.tomcat.websocket.server.WsServerContainer.addEndpoint(WsServerContainer.java:281) ~[tomcat-embed-websocket-9.0.70.jar:9.0.70]
at org.apache.tomcat.websocket.server.WsServerContainer.addEndpoint(WsServerContainer.java:231) ~[tomcat-embed-websocket-9.0.70.jar:9.0.70]
at org.springframework.web.socket.server.standard.ServerEndpointExporter.registerEndpoint(ServerEndpointExporter.java:156) ~[spring-websocket-5.3.24.jar:5.3.24]
错误截图:
主要错误信息:
A parameter of type [class java.lang.String] was found on method[onError] of class [java.lang.reflect.Method] that did not have a @PathParam annotation
中文翻译:类型为[class java.lang]的参数。在类[java.lang.reflect]的方法[onError]上找到String]。方法]中没有@PathParam注释
错误原因:
onError写错了
错误代码:
@OnError
public void onError(String message,Throwable throwable)
{
System.out.println("websocket连接出错,请联系管理员!"+message+throwable.getMessage());
}
解决办法:
- 写正确的onError方法
- 直接把onError注释掉,然后可以正确启动