Java Rest Service POST 不同意 InnerClasses 属性

Posted

技术标签:

【中文标题】Java Rest Service POST 不同意 InnerClasses 属性【英文标题】:Java Rest Service POST disagree on InnerClasses attribute 【发布时间】:2016-10-03 20:08:42 【问题描述】:

我有一个用 Java 编写的 REST 服务。我有一个运行良好的 GET 方法,现在我想实现 POST 方法。

@POST
@Consumes(MediaType.APPLICATION_JSON)
public void post(String ext)
    System.out.println("In the POST method");
    System.out.println(ext);
 

我还有一个 CORS 过滤器,因为我在本地主机上工作并在本地主机上发送东西。

Provider
public class CORSFilter implements ContainerResponseFilter 

@Override
public void filter(final ContainerRequestContext requestContext,
                  final ContainerResponseContext cres) throws IOException 
  cres.getHeaders().add("Access-Control-Allow-Origin", "*");
  cres.getHeaders().add("Access-Control-Allow-Headers", "origin, content-type, accept, authorization");
  cres.getHeaders().add("Access-Control-Allow-Credentials", "true");
  cres.getHeaders().add("Access-Control-Allow-Methods", "GET, POST, PUT, DELETE, OPTIONS, HEAD");
  cres.getHeaders().add("Access-Control-Max-Age", "1209600");
 

在 POST 方法中添加参数后,我会立即收到以下错误:

WARNING: HK2 service reification failed for [com.movierestservice.resources.MoviesResource$CORSFilter] with an exception:
MultiException stack 1 of 2
java.lang.IncompatibleClassChangeError: com.movierestservice.resources.MoviesResource and com.movierestservice.resources.MoviesResource$CORSFilter disagree on InnerClasses attribute
at java.lang.Class.getDeclaringClass0(Native Method)
at java.lang.Class.getDeclaringClass(Class.java:1235)
at java.lang.Class.getEnclosingClass(Class.java:1277)
at java.lang.Class.getSimpleBinaryName(Class.java:1443)
at java.lang.Class.isMemberClass(Class.java:1433)

等等……

当我在 POST 方法中删除参数时,一切都很好。有人知道如何解决这个问题吗?

谢谢

【问题讨论】:

有没有理由将过滤器作为内部类?把它放在它自己的类文件中 【参考方案1】:

IncompatibleClassChangeError 可能意味着您的类路径中有陈旧(旧的).class 文件。您需要从头开始重新编译项目。在 IDE 中使用“清理项目”或“重建项目”命令,或者只删除输出目录(buildout 或类似的东西)。

并确保您已在 IDE 中启用“运行前制作项目”设置。

【讨论】:

@RSSD 如果您觉得答案有用,请接受并点赞。

以上是关于Java Rest Service POST 不同意 InnerClasses 属性的主要内容,如果未能解决你的问题,请参考以下文章

HATEOAS REST Service

验证WCF Rest Service中Json对象的结构

如何在 WCF Rest Service 中传递多个参数?

为啥在使用 MojoX::JSON::RPC::Service 时,我的 Mojo 测试与 FF REST 客户端的工作方式不同?

Wcf Rest Service GET 方法无法显示 JSON 数据

Java Web Service REST 正确设计最佳实践