First, your sourceCompatibility parameter 1.7 means nothing about the runtime, so it does not affect this message.
It is purely "these classes exist at the time that Jackson initializes this class," but in some combination they do not . And perhaps this is normal, if you are not using the Java 7 class java.nio.file.Path , then you should not have problems with this logged warning message. Since this is a warning, Jackson supports the serialization / deserialization of this particular class.
Looking at Android java.nio.* Packages , it does not have java.nio.file.* Packages at the level of any API, Thus, this explains why you see a warning. And since you still cannot use java.nio.file.Path , this is not even a real problem, except for the annoying registration message.
If this message is intrusive, you can always set the Java Util logging level for com.fasterxml.jackson.databind.ext.Java7Support to be ERROR . Then you will no longer see these warning messages.
More details about the registered message:
In Jackson 2.8.x, this Java 7 support for the java.nio.file.Path class is loaded from a single JAR file and is embedded. One class dynamically checks if another can load without errors:
Class<?> cls = Class.forName("com.fasterxml.jackson.databind.ext.Java7SupportImpl");
The only way this can be unsuccessful is that something robs this class from the final set of classes. Or one of these classes, on which it depends, is missing at runtime:
import java.beans.ConstructorProperties; import java.beans.Transient; import java.nio.file.Path;
If any of these are missing, you will see an error message logged in the log. So one of them is true:
- one or more JDK 7 classes are missing at run time
com.fasterxml.jackson.databind.ext.Java7SupportImpl missing at runtime
None of these reasons is Jackson's mistake, it is something like your runtime (i.e. they do not exist in the Android API) or the Proguard clipping classes that he thinks are not used.
See also: