【问题标题】:JAX-rs + Json has Failure parsing MediaType string error errorJAX-rs + Json has Failure parsing MediaType string error error
【发布时间】:2021-03-13 02:56:06
【问题描述】:

我正在使用 JAX-rs 研究 Json。我的 Jdk 是 Java SE 1.8,所以我使用 json-lib jar 进行解析。
我写了一个简单的测试get方法。

@GET
@Path("/all")
@Produces(MediaType.APPLICATION_JSON)
public List<String> getAllCustomers() {
    JSONArray jsonArray = JSONArray.fromObject( "['json','is','easy']" );  
    System.out.println( jsonArray );  
return jsonArray;
} 

它有错误:

15:04:00,308 ERROR [org.jboss.msc.service.fail] (ServerService Thread Pool -- 68) MSC000001: Failed to start service jboss.undertow.deployment.default-server.default-host./RSexample: org.jboss.msc.service.StartException in service jboss.undertow.deployment.default-server.default-host./RSexample: java.lang.IllegalArgumentException: RESTEASY003340: Failure parsing MediaType string: 
    at org.wildfly.extension.undertow.deployment.UndertowDeploymentService$1.run(UndertowDeploymentService.java:84)
    at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
    at java.util.concurrent.FutureTask.run(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)
    at org.jboss.threads.JBossThread.run(JBossThread.java:320)
Caused by: java.lang.IllegalArgumentException: RESTEASY003340: Failure parsing MediaType string: 
    at org.jboss.resteasy.plugins.delegates.MediaTypeHeaderDelegate.parse(MediaTypeHeaderDelegate.java:115)
    at org.jboss.resteasy.plugins.delegates.MediaTypeHeaderDelegate.fromString(MediaTypeHeaderDelegate.java:20)
    at javax.ws.rs.core.MediaType.valueOf(MediaType.java:179)
    at org.jboss.resteasy.spi.metadata.ResourceBuilder$ResourceMethodBuilder.parseMediaTypes(ResourceBuilder.java:604)
    at org.jboss.resteasy.spi.metadata.ResourceBuilder$ResourceMethodBuilder.produces(ResourceBuilder.java:579)
    at org.jboss.resteasy.spi.metadata.ResourceBuilder.processMethod(ResourceBuilder.java:992)
    at org.jboss.resteasy.spi.metadata.ResourceBuilder.fromAnnotations(ResourceBuilder.java:780)
    at org.jboss.resteasy.spi.metadata.ResourceBuilder.rootResourceFromAnnotations(ResourceBuilder.java:730)
    at org.jboss.resteasy.plugins.server.resourcefactory.POJOResourceFactory.<init>(POJOResourceFactory.java:30)
    at org.jboss.resteasy.core.ResourceMethodRegistry.addPerRequestResource(ResourceMethodRegistry.java:79)
    at org.jboss.resteasy.spi.ResteasyDeployment.registration(ResteasyDeployment.java:445)
    at org.jboss.resteasy.spi.ResteasyDeployment.start(ResteasyDeployment.java:258)
    at org.jboss.resteasy.plugins.server.servlet.ServletContainerDispatcher.init(ServletContainerDispatcher.java:120)
    at org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.init(HttpServletDispatcher.java:36)
    at io.undertow.servlet.core.LifecyleInterceptorInvocation.proceed(LifecyleInterceptorInvocation.java:117)
    at org.wildfly.extension.undertow.security.RunAsLifecycleInterceptor.init(RunAsLifecycleInterceptor.java:78)
    at io.undertow.servlet.core.LifecyleInterceptorInvocation.proceed(LifecyleInterceptorInvocation.java:103)
    at io.undertow.servlet.core.ManagedServlet$DefaultInstanceStrategy.start(ManagedServlet.java:250)
    at io.undertow.servlet.core.ManagedServlet.createServlet(ManagedServlet.java:133)
    at io.undertow.servlet.core.DeploymentManagerImpl$2.call(DeploymentManagerImpl.java:565)
    at io.undertow.servlet.core.DeploymentManagerImpl$2.call(DeploymentManagerImpl.java:536)
    at io.undertow.servlet.core.ServletRequestContextThreadSetupAction$1.call(ServletRequestContextThreadSetupAction.java:42)
    at io.undertow.servlet.core.ContextClassLoaderSetupAction$1.call(ContextClassLoaderSetupAction.java:43)
    at org.wildfly.extension.undertow.security.SecurityContextThreadSetupAction.lambda$create$0(SecurityContextThreadSetupAction.java:105)
    at org.wildfly.extension.undertow.deployment.UndertowDeploymentInfoService$UndertowThreadSetupAction.lambda$create$0(UndertowDeploymentInfoService.java:1508)
    at org.wildfly.extension.undertow.deployment.UndertowDeploymentInfoService$UndertowThreadSetupAction.lambda$create$0(UndertowDeploymentInfoService.java:1508)
    at org.wildfly.extension.undertow.deployment.UndertowDeploymentInfoService$UndertowThreadSetupAction.lambda$create$0(UndertowDeploymentInfoService.java:1508)
    at org.wildfly.extension.undertow.deployment.UndertowDeploymentInfoService$UndertowThreadSetupAction.lambda$create$0(UndertowDeploymentInfoService.java:1508)
    at io.undertow.servlet.core.DeploymentManagerImpl.start(DeploymentManagerImpl.java:578)
    at org.wildfly.extension.undertow.deployment.UndertowDeploymentService.startContext(UndertowDeploymentService.java:100)
    at org.wildfly.extension.undertow.deployment.UndertowDeploymentService$1.run(UndertowDeploymentService.java:81)
    ... 6 more

当我将返回类型更改为 JSONArray 时,出现以下错误。

WFLYCTL0186:   Services which failed to start:      service jboss.undertow.deployment.default-server.default-host./RSexample: java.lang.NoClassDefFoundError: net/sf/json/JSONArray

我已经在构建路径中包含了罐子。那么还需要做什么呢?有什么帮助吗?谢谢。

【问题讨论】:

  • 第一个异常什么时候抛出?当您发送请求时?
  • @Shmulik Klein 当我使用 Wildfly 11 在 Eclipse 中部署它时。
  • 能否请您包含您的构建文件?
  • @Shmulik Klein 。我在构建 path.json-lib-2.4-jdk15 ant-commons-net commons-lang-2.1 commons-logging-api-1.1 commons-collections-3.1 commons 中包含以下文件-beanutils-1.9.4 ezmorph-1.0.6

标签: java json jax-rs


【解决方案1】:

首先,我认为你应该从你的休息端点返回 javax.ws.rs.core.Response 但你可以试试这个:

    @GET
    @Path("/all")
    @Produces(MediaType.APPLICATION_JSON)
    public List<String> getAllCustomers() {
        JSONArray jsonArray = new JSONArray("['json','is','easy']");
        List<String> list = new ArrayList<>();
        for(int i = 0; i < jsonArray.length(); i++){
            list.add(jsonArray.get(i).toString());
        }
        return list;
    }

【讨论】:

    猜你喜欢
    • 2013-05-27
    • 1970-01-01
    • 1970-01-01
    • 2022-12-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-23
    • 2018-07-22
    相关资源
    最近更新 更多