【发布时间】:2018-09-24 10:32:09
【问题描述】:
以下代码有效
@POST
@Path("/{apiId}")
@Consumes(MediaType.APPLICATION_JSON)
public Response postMetricsData(String metricsData) {
System.out.println(metricsData);
return Response.ok().build();
}
下面的代码抛出错误
@POST
@Path("/{apiId}")
@Consumes(MediaType.APPLICATION_JSON)
public Response postMetricsData(String metricsData, @PathParam("apiId") String apiId) {
System.out.println(metricsData);
return Response.ok().build();
}
遇到异常
rg.glassfish.jersey.server.model.ModelValidationException: Validation of the application resource model has failed during application initialization.
[[致命] 未找到公共 javax.ws.rs.core.Response com.trimble.paas.apicloud.metricscollector.resource.MetricsResource.postMetricsData(java.lang.String,java. lang.String) 在索引 1.; source='ResourceMethod{httpMethod=POST,consumedTypes=[application/json],producedTypes=[],suspended=false,suspendTimeout=0,suspendTimeoutUnit=MILLISECONDS,invocable=Invocable{handler=ClassBasedMethodHandler{handlerClass=class com.trimble.paas .apicloud.metricscollector.resource.MetricsResource,handlerConstructors=[org.glassfish.jersey.server.model.HandlerConstructor@59916e0f]},definitionMethod=public javax.ws.rs.core.Response com.trimble.paas.apicloud.metricscollector。 resource.MetricsResource.postMetricsData(java.lang.String,java.lang.String), parameters=[参数[type=class java.lang.String, source=null, defaultValue=null], Parameter[type=class java.lang .String, source=apiId, defaultValue=null]], responseType=class javax.ws.rs.core.Response}, nameBindings=[]}'] 在 org.glassfish.jersey.server.ApplicationHandler.initialize(ApplicationHandler.java:394) 在 org.glassfish.jersey.server.ApplicationHandler.lambda$initialize$1(ApplicationHandler.java:316) 在 org.glassfish.jersey.internal.Errors.process(Errors.java:316) 在 org.glassfish.jersey.internal.Errors.process(Errors.java:298) 在 org.glassfish.jersey.internal.Errors.processWithException(Errors.java:256) 在 org.glassfish.jersey.server.ApplicationHandler.initialize(ApplicationHandler.java:315) 在 org.glassfish.jersey.server.ApplicationHandler.(ApplicationHandler.java:282) 在 org.glassfish.jersey.servlet.WebComponent.(WebComponent.java:335) 在 org.glassfish.jersey.servlet.ServletContainer.init(ServletContainer.java:178) 在 org.glassfish.jersey.servlet.ServletContainer.init(ServletContainer.java:370) 在 javax.servlet.GenericServlet.init(GenericServlet.java:158) 在 org.apache.catalina.core.StandardWrapper.initServlet(StandardWrapper.java:1144) 在 org.apache.catalina.core.StandardWrapper.allocate(StandardWrapper.java:789) 在 org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:133) 在 org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96) 在 org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:493) 在 org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:140) 在 org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:81) 在 org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87) 在 org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342) 在 org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:800) 在 org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66) 在 org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:806) 在 org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1498) 在 org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) 在 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 在 org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) 在 java.lang.Thread.run(Thread.java:745)
知道我缺少什么吗?
【问题讨论】:
-
@PathParam导入包是什么?应该是javax.ws.rs。如果你使用javax.websocket.server(我见过一些人错误地这样做),你会得到这个错误。
标签: jersey jax-rs spring-boot-starter