簡體   English   中英

Jackson 1.8.5(針對JSON)沒有反序列化:“沒有找到這樣的類”

[英]Jackson 1.8.5 (for JSON) does not deserialize: “no such class found”

我正在使用JSON作為我的RESTful服務,我使用JSON(作為有效載荷載體格式)。

我在接口IntA上使用@JsonTypeInfo(use = JsonTypeInfo.Id.CLASS, include = JsonTypeInfo.As.PROPERTY, property = "class") SuperClass實現IntA MyClass擴展了SuperClass

我遇到的問題有點奇怪。 當我使用獨立的主程序對我的類進行序列化和反序列化時,它完全正常。 但是,當我在戰爭中將它部署到tomcat上並嘗試反序列化時,它說沒有找到這樣的類

堆棧跟蹤:

Caused by: java.lang.IllegalArgumentException: Invalid type id 'com.abc.xyz.MyClass' (for id type 'Id.class'): no such class found
        at org.codehaus.jackson.map.jsontype.impl.ClassNameIdResolver.typeFromId(ClassNameIdResolver.java:55)
        at org.codehaus.jackson.map.jsontype.impl.TypeDeserializerBase._findDeserializer(TypeDeserializerBase.java:77)
        at org.codehaus.jackson.map.jsontype.impl.AsPropertyTypeDeserializer.deserializeTypedFromObject(AsPropertyTypeDeserializer.java:67)
        at org.codehaus.jackson.map.deser.BeanDeserializer.deserializeWithType(BeanDeserializer.java:423)
        at org.codehaus.jackson.map.deser.StdDeserializerProvider$WrappedDeserializer.deserialize(StdDeserializerProvider.java:460)
        at org.codehaus.jackson.map.ObjectMapper._readValue(ObjectMapper.java:2376)
        at org.codehaus.jackson.map.ObjectMapper.readValue(ObjectMapper.java:1166)
        at org.codehaus.jackson.jaxrs.JacksonJsonProvider.readFrom(JacksonJsonProvider.java:410)
        at org.apache.cxf.jaxrs.client.AbstractClient.readBody(AbstractClient.java:447)

任何幫助是極大的贊賞。

這聽起來像是一個類路徑問題:也就是說,Jackson代碼找不到帶有類加載器的命名類。 如果可能的話,也許你可以看到傑克遜和價值等級的罐子來自哪里,看看是否可以解釋它。 遺憾的是,類路徑問題在servlet容器部署中非常臭名昭着。

在我的情況下我是如何解決這個問題的(這可能與你的情況完全無關):

    ClassLoader oldClassLoader = Thread.currentThread().getContextClassLoader();
    Thread.currentThread().setContextClassLoader( classLoader );
    try
    {
        invokeCodeThatPerformsSerializationDeserialization();
    }
    finally
    {
        Thread.currentThread().setContextClassLoader( oldClassLoader );
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM