Skip to content

Support BigDecimal fields in documents with jdk17 #1439

Closed
@jorgerod

Description

@jorgerod

Hi

I am testing jdk17 in an application that contains a field in a document of type BigDecimal.
On application startup, I get the following error:

Trace
Caused by: java.lang.reflect.InaccessibleObjectException: Unable to make field private final java.math.BigInteger java.math.BigDecimal.intVal accessible: module java.base does not "opens java.math" to unnamed module @7d0587f1
	at java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:354) ~[na:na]
	at java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:297) ~[na:na]
	at java.base/java.lang.reflect.Field.checkCanSetAccessible(Field.java:178) ~[na:na]
	at java.base/java.lang.reflect.Field.setAccessible(Field.java:172) ~[na:na]
	at org.springframework.util.ReflectionUtils.makeAccessible(ReflectionUtils.java:787) ~[spring-core-6.0.0-M3.jar:6.0.0-M3]
	at org.springframework.data.mapping.context.AbstractMappingContext$PersistentPropertyCreator.doWith(AbstractMappingContext.java:496) ~[spring-data-commons-3.0.0-M3.jar:3.0.0-M3]
	at org.springframework.util.ReflectionUtils.doWithFields(ReflectionUtils.java:711) ~[spring-core-6.0.0-M3.jar:6.0.0-M3]
	at org.springframework.data.mapping.context.AbstractMappingContext.doAddPersistentEntity(AbstractMappingContext.java:382) ~[spring-data-commons-3.0.0-M3.jar:3.0.0-M3]
	at org.springframework.data.mapping.context.AbstractMappingContext.addPersistentEntity(AbstractMappingContext.java:339) ~[spring-data-commons-3.0.0-M3.jar:3.0.0-M3]
	at org.springframework.data.couchbase.core.mapping.CouchbaseMappingContext.addPersistentEntity(CouchbaseMappingContext.java:139) ~[spring-data-couchbase-5.0.0-M3.jar:5.0.0-M3]
	at org.springframework.data.mapping.context.AbstractMappingContext$PersistentPropertyCreator.lambda$createAndRegisterProperty$3(AbstractMappingContext.java:551) ~[spring-data-commons-3.0.0-M3.jar:3.0.0-M3]
	at java.base/java.lang.Iterable.forEach(Iterable.java:75) ~[na:na]
	at org.springframework.data.mapping.context.AbstractMappingContext$PersistentPropertyCreator.createAndRegisterProperty(AbstractMappingContext.java:548) ~[spring-data-commons-3.0.0-M3.jar:3.0.0-M3]
	at org.springframework.data.mapping.context.AbstractMappingContext$PersistentPropertyCreator.doWith(AbstractMappingContext.java:502) ~[spring-data-commons-3.0.0-M3.jar:3.0.0-M3]
	at org.springframework.util.ReflectionUtils.doWithFields(ReflectionUtils.java:711) ~[spring-core-6.0.0-M3.jar:6.0.0-M3]
	at org.springframework.data.mapping.context.AbstractMappingContext.doAddPersistentEntity(AbstractMappingContext.java:382) ~[spring-data-commons-3.0.0-M3.jar:3.0.0-M3]
	at org.springframework.data.mapping.context.AbstractMappingContext.addPersistentEntity(AbstractMappingContext.java:339) ~[spring-data-commons-3.0.0-M3.jar:3.0.0-M3]
	at org.springframework.data.couchbase.core.mapping.CouchbaseMappingContext.addPersistentEntity(CouchbaseMappingContext.java:139) ~[spring-data-couchbase-5.0.0-M3.jar:5.0.0-M3]
	at org.springframework.data.couchbase.core.mapping.CouchbaseMappingContext.getPersistentEntity(CouchbaseMappingContext.java:159) ~[spring-data-couchbase-5.0.0-M3.jar:5.0.0-M3]
	at org.springframework.data.couchbase.core.mapping.CouchbaseMappingContext.getPersistentEntity(CouchbaseMappingContext.java:41) ~[spring-data-couchbase-5.0.0-M3.jar:5.0.0-M3]
	at org.springframework.data.mapping.context.AbstractMappingContext.getPersistentEntity(AbstractMappingContext.java:191) ~[spring-data-commons-3.0.0-M3.jar:3.0.0-M3]
	at org.springframework.data.mapping.context.AbstractMappingContext.getPersistentEntity(AbstractMappingContext.java:90) ~[spring-data-commons-3.0.0-M3.jar:3.0.0-M3]
	at org.springframework.data.repository.core.support.RepositoryFactoryBeanSupport.lambda$afterPropertiesSet$6(RepositoryFactoryBeanSupport.java:281) ~[spring-data-commons-3.0.0-M3.jar:3.0.0-M3]
	at java.base/java.util.Optional.ifPresent(Optional.java:178) ~[na:na]
	at org.springframework.data.repository.core.support.RepositoryFactoryBeanSupport.afterPropertiesSet(RepositoryFactoryBeanSupport.java:281) ~[spring-data-commons-3.0.0-M3.jar:3.0.0-M3]
	at org.springframework.data.couchbase.repository.support.CouchbaseRepositoryFactoryBean.afterPropertiesSet(CouchbaseRepositoryFactoryBean.java:89) ~[spring-data-couchbase-5.0.0-M3.jar:5.0.0-M3]
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1787) ~[spring-beans-6.0.0-M3.jar:6.0.0-M3]
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1736) ~[spring-beans-6.0.0-M3.jar:6.0.0-M3]
	... 44 common frames omitted

Versions

  • Spring-boot version: 3.0.0-M2
  • Spring-data-couchbase version: 5.0.0-M3

Related issue: #1278

Workaround:
Add JVM Parameter --add-opens java.base/java.math=ALL-UNNAMED

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

Relationships

None yet

Development

No branches or pull requests

Issue actions