Когда я обновил Java-версию до openJDK 11, я получаю исключение nullpointerException при загрузке конфигураций модель-картографа - PullRequest
1 голос
/ 28 июня 2019

После обновления версии 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

1 Ответ

0 голосов
/ 01 июля 2019

Внутренне ByteBuddy генерирует исключение, которое вызывает проблему, я рассмотрю его немного подробнее, чтобы увидеть, возможно, это ошибка в ModelMapper.

В любом случае проверьте вкладку Java 8 на http://modelmapper.org/user-manual/property-mapping/, ваш текущий код, похоже, использует более старую документацию.

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
});

Это может конвертировать Дата -> Длинный из коробки без какой-либо другой конфигурации.Если вы хотите настроить его дальше, вы всегда можете создать пользовательские конвертеры, например, так:

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));
...