当前位置: 首页 > 知识库问答 >
问题:

JAX-RS:NoSuchMEDOD发现异常泽西-媒体-moxy JSON

颜杰
2023-03-14

我已经为此挣扎了几个小时了。我正在用jersey开发JAX-RS。一切都很顺利,直到我不得不在一个地方返回JSON。我知道必须有一个jersey media moxy库才能将Java对象绑定到JSON格式。从Jersey media moxy到Google的genson库,我一个接一个地下载了几个JSON库。但还没有成功。用我从网上下载的Jersey media moxyhttp://www.java2s.com/Code/Jar/j/Downloadjerseymediamoxy23jar.htm,我在运行webservice时出现以下错误。

SEVERE: StandardWrapper.Throwable
java.lang.NoSuchMethodError: org.glassfish.jersey.internal.util.PropertiesHelper.getValue(Ljava/util/Map;Ljavax/ws/rs/RuntimeType;Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Class;)Ljava/lang/Object;
    at org.glassfish.jersey.moxy.json.MoxyJsonFeature.configure(MoxyJsonFeature.java:67)
    at org.glassfish.jersey.model.internal.CommonConfig.configureFeatures(CommonConfig.java:714)
    at org.glassfish.jersey.model.internal.CommonConfig.configureMetaProviders(CommonConfig.java:644)
    at org.glassfish.jersey.server.ResourceConfig.configureMetaProviders(ResourceConfig.java:829)
    at org.glassfish.jersey.server.ApplicationHandler.initialize(ApplicationHandler.java:453)
    at org.glassfish.jersey.server.ApplicationHandler.access$500(ApplicationHandler.java:184)
    at org.glassfish.jersey.server.ApplicationHandler$3.call(ApplicationHandler.java:350)
    at org.glassfish.jersey.server.ApplicationHandler$3.call(ApplicationHandler.java:347)
    at org.glassfish.jersey.internal.Errors.process(Errors.java:315)
    at org.glassfish.jersey.internal.Errors.process(Errors.java:297)
    at org.glassfish.jersey.internal.Errors.processWithException(Errors.java:255)
    at org.glassfish.jersey.server.ApplicationHandler.<init>(ApplicationHandler.java:347)
    at org.glassfish.jersey.servlet.WebComponent.<init>(WebComponent.java:390)
    at org.glassfish.jersey.servlet.ServletContainer.init(ServletContainer.java:172)
    at org.glassfish.jersey.servlet.ServletContainer.init(ServletContainer.java:364)
    at javax.servlet.GenericServlet.init(GenericServlet.java:158)
    at org.apache.catalina.core.StandardWrapper.initServlet(StandardWrapper.java:1231)
    at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1144)
    at org.apache.catalina.core.StandardWrapper.allocate(StandardWrapper.java:817)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:135)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:141)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
    at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:616)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:521)
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1096)
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:674)
    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1500)
    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1456)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
    at java.lang.Thread.run(Thread.java:745)

Jan 22, 2016 6:44:46 AM org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Allocate exception for servlet JAVA WS
java.lang.NoSuchMethodError: org.glassfish.jersey.internal.util.PropertiesHelper.getValue(Ljava/util/Map;Ljavax/ws/rs/RuntimeType;Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Class;)Ljava/lang/Object;
    at org.glassfish.jersey.moxy.json.MoxyJsonFeature.configure(MoxyJsonFeature.java:67)
    at org.glassfish.jersey.model.internal.CommonConfig.configureFeatures(CommonConfig.java:714)
    at org.glassfish.jersey.model.internal.CommonConfig.configureMetaProviders(CommonConfig.java:644)
    at org.glassfish.jersey.server.ResourceConfig.configureMetaProviders(ResourceConfig.java:829)
    at org.glassfish.jersey.server.ApplicationHandler.initialize(ApplicationHandler.java:453)
    at org.glassfish.jersey.server.ApplicationHandler.access$500(ApplicationHandler.java:184)
    at org.glassfish.jersey.server.ApplicationHandler$3.call(ApplicationHandler.java:350)
    at org.glassfish.jersey.server.ApplicationHandler$3.call(ApplicationHandler.java:347)
    at org.glassfish.jersey.internal.Errors.process(Errors.java:315)
    at org.glassfish.jersey.internal.Errors.process(Errors.java:297)
    at org.glassfish.jersey.internal.Errors.processWithException(Errors.java:255)
    at org.glassfish.jersey.server.ApplicationHandler.<init>(ApplicationHandler.java:347)
    at org.glassfish.jersey.servlet.WebComponent.<init>(WebComponent.java:390)
    at org.glassfish.jersey.servlet.ServletContainer.init(ServletContainer.java:172)
    at org.glassfish.jersey.servlet.ServletContainer.init(ServletContainer.java:364)
    at javax.servlet.GenericServlet.init(GenericServlet.java:158)
    at org.apache.catalina.core.StandardWrapper.initServlet(StandardWrapper.java:1231)
    at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1144)
    at org.apache.catalina.core.StandardWrapper.allocate(StandardWrapper.java:817)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:135)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:141)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
    at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:616)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:521)
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1096)
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:674)
    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1500)
    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1456)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
    at java.lang.Thread.run(Thread.java:745)

如果我用MediaType.APPLICATION_XML更改@Produces()注释,一切都很好,但是一旦我将其更改为MediaType.APPLICATION_JSON,我就会收到错误。

这是一个非maven项目,我通过Project-添加了罐子-

在此方面的任何帮助都将不胜感激。提前谢谢。

共有3个答案

夏侯楷
2023-03-14

就我而言,这是因为:

<dependency>
    <groupId>org.glassfish.jersey.connectors</groupId>
    <artifactId>jersey-apache-connector</artifactId>
    <version>${jersey.version}</version>
</dependency>

其中${jersey.version}与其他jersey依赖项不同

韩峰
2023-03-14

确保您jersey.mediajar与其他jersey jar具有完全相同的版本

compile "org.glassfish.jersey.media:jersey-media-json-jackson:{$version}

所有JAR的$版本应相同

凌长恨
2023-03-14

我也遇到了同样的问题,花了很长时间才解决。

这个问题的基本问题是缺少几个jar,jersey-media-moxy-2.27.jarjersey-media-moxy-2.27 jar在内部使用了运行时所需的更多API。

要解决这个问题,请参阅附带的快照,并确保您的项目(版本问题)图像中有所有JAR

建议:如果您使用的是Eclipse IDE,认为服务器已“启动”,请在启动服务器时查看控制台日志(在我的示例中,它是Tomcat)。不应该有任何错误消息。

 类似资料:
  • 我使用的是一个restful web服务,CRUD操作可以在其中工作,除了在一个页面上列出每个用户。getUser()方法仅用于登录webapp。我已经看了这个问题,但我没有使用命名查询。 我得到的错误:: 严重:产生媒体类型冲突。资源方法public…UserResource.getUser()和…UserResource.list()抛出org.codehaus.jackson.JsonGen

  • 我现在正在尝试泽西,按照这个链接在netbean中设置了一个网络服务。我有我的实体类和REST类。它可以从javafx2客户端添加、编辑、删除、请求对象(在本例中是用户对象)。 然而,现在我尝试向我的网络服务添加一个新方法来进行一些简单的身份验证。首先,我在Users.java文件中添加了一个新的命名查询(Users.login): 之后,我将以下代码添加到我的UsersFacadeREST.ja

  • 我正在进行一个示例项目,使用: JAX-RS(泽西2) JSR-303 Bean validaiton 泽西测试测试 Grizzly Http容器 杰克逊2.7.3 在添加@JsonIgnore和@JsonProperty之前,一切都按预期进行,在对对象属性执行bean验证时,我能够毫无问题地运行测试。通常情况下,“password”字段不应用于反序列化,所以我用@JsonIgnore标记了它的g

  • 更新刚刚听到从泽西的家伙,这是不可能的2.7。只有资源方法本身被异步调用,而不是筛选器。仍然欢迎任何关于继续进行的建议。

  • 我正在尝试遵循Jersey文档,以便在发生错误时启用非200响应(https://Jersey.java.net/documentation/latest/representations.html#D0E3586) 我的代码看起来像: 不幸的是,这会产生以下错误: [2015-02-01T16:13:02.157+0000][glassfish 4.1][严重][][org.glassfish.j

  • 问题内容: 有没有办法在Jersey中进行全局异常处理?我希望有一种方法可以将其放置在实际调用资源的地方,而不是单个资源具有try / catch块,然后调用某种方法来清理将要发送回客户端的所有异常。这有可能吗?如果是这样,怎么办? 而是在哪里向Jersey Servlet抛出某种Jersey配置的异常: 具有: 异常会被抛出到我可以拦截并从那里调用的东西。 实际上,这仅仅是为了简化Jersey的