Jackson数据绑定blackbird模块v2.12.1支持Java8



我最近将我的jackson数据绑定模块从2.11.1更新到2.12.1,在文档中我发现建议使用blackbird模块而不是加力器。但在升级后,我得到了这个错误

com.fasterxml.jackson.module.blackbird.BlackbirdModule Unable to find Java 9+ MethodHandles.privateLookupIn.  Blackbird is not performing optimally! - @ ->  
java.lang.NoSuchMethodException: no such method: java.lang.invoke.MethodHandles.privateLookupIn(Class,Lookup)Lookup/invokeStatic

所以我想知道是否有一种方法可以将blackbird与java8一起使用。

jackson依赖项的pom.xml条目如下所示

<jackson.version>2.12.1</jackson.version> <!-- https://github.com/FasterXML/jackson-core/blob/master/release-notes/VERSION-2.x -->
<jackson-databind.version>2.12.1</jackson-databind.version>    
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>${jackson-databind.version}</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
<version>${jackson.version}</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.jaxrs</groupId>
<artifactId>jackson-jaxrs-json-provider</artifactId>
<version>${jackson.version}</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.datatype</groupId>
<artifactId>jackson-datatype-jsr310</artifactId>
<version>${jackson.version}</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.datatype</groupId>
<artifactId>jackson-datatype-jdk8</artifactId>
<version>${jackson.version}</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.module</groupId>
<artifactId>jackson-module-blackbird</artifactId>
<version>${jackson.version}</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.dataformat</groupId>
<artifactId>jackson-dataformat-xml</artifactId>
<version>${jackson.version}</version>
</dependency>

首先,这是一条警告消息。不是错误,功能不会中断。建议Blackbird模块使用java 9+,因为Blackbird使用java 9中引入的privateLookupIn方法。

即使它与Java 8兼容,您也无法获得最佳性能,如果在Java 8环境中运行,您将收到此警告消息。

如果你想摆脱这个警告消息,你需要删除黑鸟模块并使用加力。

我发现如果你把加力罐子放在类路径中,警告就会消失。

最新更新