簡體   English   中英

當我將 Java 版本升級到 openJDK 11 時,加載模型映射器配置時出現 nullpointerException

[英]When i upgraded java version to openJDK 11, I am getting nullpointerException while loading modelmapper configurations

將 Java 版本升級到 openJDK 11 后,modelMapper 配置未加載,出現 NullPointerException。

NullPointerException issue is not resolved even after upgrading modelMapper version to 2.3.2

錯誤日志:

1) 配置映射失敗

堆棧跟蹤:

at org.modelmapper.internal.Errors.throwConfigurationExceptionIfErrorsExist(Errors.java:241)
    at org.modelmapper.internal.ExplicitMappingBuilder.build(ExplicitMappingBuilder.java:244)
    at org.modelmapper.internal.ExplicitMappingBuilder.build(ExplicitMappingBuilder.java:96)
    at org.modelmapper.internal.TypeMapImpl.addMappings(TypeMapImpl.java:92)
    at org.modelmapper.internal.TypeMapStore.getOrCreate(TypeMapStore.java:124)
    at org.modelmapper.ModelMapper.addMappings(ModelMapper.java:113)
    ...
Caused by: java.lang.NullPointerException
    at org.modelmapper.internal.ExplicitMappingBuilder$ExplicitMappingInterceptor.access$000(ExplicitMappingBuilder.java:304)
    at org.modelmapper.internal.ExplicitMappingBuilder.createAccessorProxies(ExplicitMappingBuilder.java:287)
    at org.modelmapper.internal.ExplicitMappingBuilder.createProxies(ExplicitMappingBuilder.java:277)
    at org.modelmapper.internal.ExplicitMappingBuilder.visitPropertyMap(ExplicitMappingBuilder.java:266)
    at org.modelmapper.PropertyMap.configure(PropertyMap.java:386)
    at jdk.internal.reflect.GeneratedMethodAccessor16.invoke(Unknown Source)
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.base/java.lang.reflect.Method.invoke(Method.java:566)
    at org.modelmapper.internal.ExplicitMappingBuilder.build(ExplicitMappingBuilder.java:227)
    ... 6 more

在內部,ByteBuddy 正在拋出導致問題的異常,我將進一步研究它,看看是否可能是 ModelMapper 中的錯誤。

無論如何,請查看http://modelmapper.org/user-manual/property-mapping/ 上的 Java 8 選項卡,您當前的代碼似乎正在使用舊文檔。

ModelMapper mm = new ModelMapper();

TypeMap<A, B> typeMap = mm.createTypeMap(A.class, B.class);
typeMap.addMappings(mapper -> {
    mapper.map(A::getDate, B::setTest);
    ... // Other mappings
});

這可以轉換Date -> Long開箱即用,無需任何其他配置。 如果您想進一步配置它,您可以隨時創建自定義轉換器,如下所示:

Converter<Date, Long> dateToLong = new AbstractConverter<Date, Long>() {
    @Override
    protected Long convert(Date source) {
        System.out.println("converting: " + source + " to " + source.getTime());
        return source.getTime();
    }
};

typeMap.addMappings(mapper -> mapper.using(dateToLong).map(A::getDate, B::setTest));

我在使用 modelmapper 2.3.0 時遇到了同樣的問題。 更新到最新的 2.3.9 並解決了問題

暫無
暫無

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

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