简体   繁体   English

带有“无法解析 java.lang.Class<...> 注释类...”的 Android/Jackson ObjectMapper 垃圾邮件日志

[英]Android / Jackson ObjectMapper spamming log with "Unable to resolve java.lang.Class<...> annotation class ..."

I heavily use Jackson to serialize and deserialize data, using classes & POJO in a common library used by a servlet (backend), and a client (android app), and file storage on device for network optimisation purposes.我大量使用 Jackson 来序列化和反序列化数据,在 servlet(后端)和客户端(Android 应用程序)使用的公共库中使用类和 POJO,以及用于网络优化目的的设备上的文件存储。 Functionnaly, my code is working as intented. Functionnaly,我的代码按预期工作。

From backend side nothing suspicious about my log.从后端看,我的日志没有任何可疑之处。 But in android, every time I use ObjectMapper, both to serialize or deserialize, I get in logcat lignes such as :但是在android中,每次我使用ObjectMapper进行序列化或反序列化时,我都会进入logcat lignes,例如:

2019-12-22 08:09:54.653 fr.bel.app I/ntdb: userRefresh() : Requesting API...
2019-12-22 08:09:54.661 fr.bel.app I/app: Unable to resolve java.lang.Class<fr.bel.StringWrapper> annotation class 42
2019-12-22 08:09:54.661 fr.bel.app I/app: Unable to resolve java.lang.Class<fr.bel.StringWrapper> annotation class 41
2019-12-22 08:09:54.672 fr.bel.app I/app: Unable to resolve java.lang.Class<fr.bel.UserResponse> annotation class 42
2019-12-22 08:09:54.672 fr.bel.app I/app: Unable to resolve java.lang.Class<fr.bel.Response> annotation class 42
2019-12-22 08:09:54.672 fr.bel.app I/app: Unable to resolve java.lang.Class<fr.bel.Response> annotation class 41
2019-12-22 08:09:54.673 fr.bel.app I/app: Unable to resolve java.lang.Class<fr.bel.Response> annotation class 41
2019-12-22 08:09:54.673 fr.bel.app I/app: Unable to resolve java.lang.Class<fr.bel.UserResponse> annotation class 41
2019-12-22 08:09:54.675 fr.bel.app I/app: Unable to resolve java.lang.Class<fr.bel.User> annotation class 42
2019-12-22 08:09:54.677 fr.bel.app I/app: Unable to resolve java.lang.Class<fr.bel.User> annotation class 42
2019-12-22 08:09:54.677 fr.bel.app I/app: Unable to resolve java.lang.Class<fr.bel.User> annotation class 41

Here is an example of class declaration :这是类声明的示例:

package fr.thelium.nottransdb;

import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;

@XmlRootElement
public class StringWrapper {
    @XmlElement private String string;

    public StringWrapper(String string) {
        this.string = string;
    }

    public StringWrapper() {
        string=null;
    }

    public String getString() {
        return string;
    }

    public void setString(String string) {
        this.string = string;
    }

    @Override
    public String toString() {
        return string;
    }
}

I also tryed without using @XmlElement => same result (app works, but same messages in log)我也尝试不使用 @XmlElement => 相同的结果(应用程序有效,但日志中的消息相同)

Here are example which produce these results :以下是产生这些结果的示例:

public void store() {
    /* Storing */
    ObjectMapper objectMapper=new ObjectMapper();
    try {
        File file = new File(TrackingSingleton.getInstance().getMainActivity().getFilesDir(), DEVICE_PERSISTED_DATA_FILENAME);
        objectMapper.writeValue(file, getNotificationList());
        Log.i(TAG,"Successfully persisted device data");
    }
    catch (Exception e) {
        Log.e(TAG,"Failed to persist device data : ",e);
    }
}

Any idea of what I may be doing wrong ?知道我可能做错了什么吗? In advance many thanks for any help provided :)提前非常感谢您提供的任何帮助:)

I finally managed to get a clean log by removing both XmlElement and XmlRootElement annotations.通过删除 XmlElement 和 XmlRootElement 注释,我终于设法获得了一个干净的日志。 (I only tryied removing XmlElement before posting : was not enough). (我只是在发布之前尝试删除 XmlElement :还不够)。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM