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

Restcomm jain-slee jackson NoClassDefFoundError: com/快速xml/杰克逊/数据库/ObjectMapper

濮阳君浩
2023-03-14

我正在使用restcomm jain slee编写IDR sender java应用程序

Im使用下面的json解码来解码传入的http post请求json数据。

String postBody = getContentFromStream(event.getRequest().getInputStream());
ObjectMapper objectMapper = new ObjectMapper();

为此目的,我使用快速xml杰克逊。

import com.fasterxml.jackson.databind.ObjectMapper;

我正在WildFly Docker容器中部署这个。当试图解码jason时,我发现了这个错误。Java语言lang.NoClassDefFoundError:com/fasterxml/jackson/databind/ObjectMapper

10:08:49,405 ERROR [org.mobicents.slee.runtime.eventrouter.routingtask.EventRoutingTaskImpl] (SLEE-EventRouterExecutor-6-thread-1) Caught throwable while routing EventContext[event type id = EventTypeID[name=net.java.slee.resource.http.events.incoming.request.POST,vendor=net.java.slee,version=1.0] , event = org.restcomm.slee.resource.http.events.HttpServletRequestEventImpl[id=13ec6b6e:171f3c2265a:-7ffc] , local ac = RA:HttpServletRA:ea25a320-102d-491c-a829-48c8c2554a3e , address = null , serviceID = null]: java.lang.NoClassDefFoundError: com/fasterxml/jackson/databind/ObjectMapper
    at lk.dialog.pd.idrsend.IdrSendSbb.onHttpPostRequest(IdrSendSbb.java:362)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.mobicents.slee.runtime.sbbentity.SbbEntityImpl.invokeEventHandler(SbbEntityImpl.java:480)
    at org.mobicents.slee.runtime.eventrouter.routingtask.EventRoutingTaskImpl.routeQueuedEvent(EventRoutingTaskImpl.java:378)
    at org.mobicents.slee.runtime.eventrouter.routingtask.EventRoutingTaskImpl.run(EventRoutingTaskImpl.java:125)
    at org.mobicents.slee.runtime.eventrouter.EventRouterExecutorImpl$EventRoutingTaskStatsCollector.run(EventRouterExecutorImpl.java:72)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
    at java.lang.Thread.run(Thread.java:748)
 Caused by: java.lang.ClassNotFoundException: com.fasterxml.jackson.databind.ObjectMapper
    at java.net.URLClassLoader.findClass(URLClassLoader.java:382)
    at org.mobicents.slee.container.component.deployment.classloading.URLClassLoaderDomainImpl.findClassLocallyLocked(URLClassLoaderDomainImpl.java:272)
    at org.mobicents.slee.container.component.deployment.classloading.URLClassLoaderDomainImpl.findClass(URLClassLoaderDomainImpl.java:242)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at org.mobicents.slee.container.component.deployment.classloading.URLClassLoaderDomainImpl.loadClass(URLClassLoaderDomainImpl.java:206)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    ... 12 more

我还向jboss部署结构中添加了

<?xml version="1.0" encoding="UTF-8"?>  
<jboss-deployment-structure>  
<deployment>  
     <dependencies>  
          <module name="com.fasterxml.jackson.databind" export="true" />  
    </dependencies>  
</deployment>  

罐子也可以在

/opt/modules/system/layers/base/com/fasterxml/jackson/core/jackson-databind/main

我还没有找到可能的解决办法。需要帮助。

PS:我还添加了依赖项

    <dependency>
        <groupId>org.jboss.resteasy</groupId>
        <artifactId>resteasy-jackson2-provider</artifactId>
        <version>3.0.8.Final</version>
        <scope>provided</scope>
    </dependency>

共有1个答案

瞿子濯
2023-03-14

WILDFLY_DIR/模块/系统/层/base/org/restcomm/slee/容器/lib/main/module.xml末尾添加以下行

<module export="true" xmlns="urn:jboss:module:1.3" name="com.fasterxml.jackson.core.jackson-core"/>
<module export="true" xmlns="urn:jboss:module:1.3" name="com.fasterxml.jackson.core.jackson-annotations"/>
<module export="true" xmlns="urn:jboss:module:1.3" name="com.fasterxml.jackson.core.jackson-databind"/>

从这里获得了参考,解决了另一个问题。

 类似资料:
  • 这是一个与这里的问题类似的问题,不幸的是,这个问题尚未解决。 如果您想调试代码,下面是GitHub repo。 虽然我已将相关依赖项添加到Mave。 下面是源代码演示。java 这是我的pom。xml 我编译并运行应用程序

  • 我想使用Spring的RestTemplate plus Jackson来使用Web服务。我已经学习了几本教程,并且已经达到了创建DAO的目的。这是我获取所有域对象的方法: 但我的Web服务不会立即返回Station对象数组,而是以这种方式返回一个更具语义的表达式: 所以我的问题是,我不知道如何“告诉”RestTemplate在“stations”指示符之后立即解析对象列表,而不创建临时对象,这似

  • 问题内容: 在Jersey上使用Jackson 处理器时,何时以及为何需要在两者之间使用注释? 杰克逊(Jackson)还提供了自己的服务提供商以直接使用。这种方法缺少什么?还是为什么我比其他人更喜欢 ps:我也用弹簧 问题答案: 为了生成JSON,通常只需指定即可。但是,这将默认采用JAXB路由。 使用Object-> JAXB-> JSON,您必须注释要映射的类。这可以很好地工作,但是一旦您要

  • 我如何告诉Jackson忽略JSON名称? 我有以下POJO: 当我有这样的东西: “ABCName”:“foo”,然后杰克逊没有认出它抛出错误。 它期望的是: “abcName”:“foo”。 代码: 输出:{"abcname":"Foo"} 然后我试着用@JsonProperty(“ABCName”)注释ABCName 在我注释并运行代码之后,我得到的是:{“ABCName”:“Foo”,“A

  • 首先,我不熟悉Jython。我正在寻找一种将python代码集成到Java项目中的方法。因此我正在调查Jython。 我正在尝试将一个 json 字符串转换为 Java 对象 - 在 python 中。 首先,我一直在努力让Jython找到我的java类。由于缺乏更优雅的解决方案,我可以通过简单地执行以下操作来向前迈进: 无论如何。。。 我正在尝试以下操作: 但是,在运行时,我收到以下错误: 我不

  • 当我尝试反序列化汽车类时,我得到了下面的错误。杰克逊正试图在父类中的子元素中搜索字段。我如何确保杰克逊使用适当的子类型进行反序列化?我相信我需要使用混合/客户转换器。但我不确定如何在这个特定场景中使用它们。 注意:在我的例子中,除TestMain之外的所有类都在一个jar文件中,我不能修改源文件。 错误 线程"main"中的异常com.fasterxml.jackson.databind.exc.