Starting migrating (custom/organization) add-ons to prepare migration of the first application I’m experiencing first problems.
The following add-on setup worked until Jmix version 1.5.3
- but does not in Jmix 2.0.1
.
There is a **base**
add-on (kind of organization core) providing custom entity datatypes, e.g.:
java.time.Duration
java.time.Period
java.time.MonthDay
java.time.YearMonth
java.time.ZoneOffset
Other custom add-on are using them implicitly by defining (JPA and DTO) entities. But since Jmix 2.0 the contextLoads()
test fail:
org.springframework.beans.BeanInstantiationException: Failed to instantiate [io.jmix.core.impl.MetadataLoader]: Constructor threw exception
at app//org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:224)
at app//org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:110)
at app//org.springframework.beans.factory.support.ConstructorResolver.instantiate(ConstructorResolver.java:323)
... 164 more
Caused by: java.lang.IllegalStateException: Can't find range class 'java.time.ZoneOffset' for property 'ls**mdl_***SystemInfoDTO.zoneOffset'
Caused by:
at io.jmix.core.impl.MetaModelLoader$RangeInitTask.execute(MetaModelLoader.java:1075)
at io.jmix.core.impl.MetaModelLoader.loadModel(MetaModelLoader.java:145)
at io.jmix.core.impl.MetadataLoader.<init>(MetadataLoader.java:61)
at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:77)
at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:499)
at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:480)
at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:211)
... 166 more
I experienced a problem with a similar reading symptom some time ago: https://forum.jmix.io/t/using-custom-datatype-from-another-module-add-on/945/4. Neither me nor Jmix studio changed the module configuration while migrating from Jmix 1.5.3
to 2.0.1
.
Trying to find some documentation about changed datatype handling, I noticed the modules API https://docs.jmix.io/jmix/modularity/extension.html#modules-api. I could not solve the issue but helped debugging the loaded modules and datatypes. The custom addons/modules are there, but the new datatypes are missing (22 datatypes defined by jmix core only):
I still need some help to find out why custom datatypes are not loaded.