Android   发布时间:2022-04-28  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了java – Jackson无法在Android上加载JDK7类型大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我在我的 Android应用程序中使用Jackson 2.8.2来反序列化JSON.反序列化本身可行,但是,我可以在应用程序日志中看到以下警告:
Unable to load JDK7 types (Annotations,java.nio.file.Path): no Java7 support added

Proguard已禁用,sourceCompatibility设置为“1.7”.如何在构建中添加这些看似缺失的类型?

解决方法

首先,1.7的sourceCompatibility设置对运行时环境没有任何意义,因此它对此消息没有影响.

这纯粹是“在杰克逊初始化这个课程时这些课程存在的问题” – 而且它们并不存在于某种组合中.也许没关系,如果你不使用Java 7 java.nio.file.Path类,那么你应该对这个记录的警告消息没有任何问题.因为这就是这个警告的内容,杰克逊支持这个特定类的序列化/反序列化.

查看Android java.nio.* packages,它在任何API级别都没有java.nio.file.*包.这就解释了为什么你会看到警告信息.因为你无论如何都不能使用java.nio.file.Path,除了讨厌的日志消息之外,这甚至都不是真正的问题.

如果此消息很麻烦,您始终可以将logger com.fasterxml.jackson.databind.ext.Java7Support的Java Util Logging级别设置为级别ERROR.然后您将不再看到这些警告消息.

有关已记录消息的更多信息

在Jackson 2.8.x中,对Java 7类java.nio.file.Path的这种支持都是从同一个JAR文件加载而且是内置的.一个类动态检查另一个是否可以加载而不会出错:

Class<?> cls = Class.forName("com.fasterxml.jackson.databind.ext.Java7SupportImpl");

这可能失败的唯一方法是,如果有一些东西从最后一组类中剥离这个类.或者运行时缺少这些依赖的类之一:

import java.beans.ConstructorProperties;
import java.beans.Transient;
import java.nio.file.Path;

如果缺少其中任何一个,那么您将看到记录的错误消息.所以其中一个是真的:

>运行时缺少一个或多个JDK 7类
>运行时缺少com.fasterxml.jackson.databind.ext.Java7SupportImpl

这些原因都不是杰克逊的错,它们是关于你的运行时环境的东西(即它们在Android API中不存在),或者它们认为没有使用的Proguard剥离类.

也可以看看:

> Android import java.nio.file.Files; cannot be resolved
> How to use java.nio.file package in android?
> Android java.nio packages

大佬总结

以上是大佬教程为你收集整理的java – Jackson无法在Android上加载JDK7类型全部内容,希望文章能够帮你解决java – Jackson无法在Android上加载JDK7类型所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。