简体   繁体   English

JDK 17 spring 启动无法设为私有 java.time.LocalDateTime

[英]JDK 17 spring boot Unable to make private java.time.LocalDateTime

I have private LocalDateTime lastModifiedDate property in the simple mongodb entity.我在简单的 mongodb 实体中有私有 LocalDateTime lastModifiedDate 属性。 Run application with latest 2.5.5 and openjdk 17使用最新的 2.5.5 和 openjdk 17 运行应用程序

Following exeptions I have with date time
Caused by: java.lang.reflect.InaccessibleObjectException: Unable to make private java.time.LocalDateTime(java.time.LocalDate,java.time.LocalTime) accessible: module java.base does not "opens java.time" to unnamed module @61baa894
    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.Constructor.checkCanSetAccessible(Constructor.java:188) ~[na:na]
    at java.base/java.lang.reflect.Constructor.setAccessible(Constructor.java:181) ~[na:na]
    at org.springframework.util.ReflectionUtils.makeAccessible(ReflectionUtils.java:202) ~[spring-core-5.3.10.jar!/:5.3.10]
    at org.springframework.data.mapping.PreferredConstructor.<init>(PreferredConstructor.java:64) ~[spring-data-commons-2.5.5.jar!/:2.5.5]
    at org.springframework.data.mapping.model.PreferredConstructorDiscoverer$Discoverers.buildPreferredConstructor(PreferredConstructorDiscoverer.java:222) ~[spring-data-commons-2.5.5.jar!/:2.5.5]
    at org.springframework.data.mapping.model.PreferredConstructorDiscoverer$Discoverers.access$200(PreferredConstructorDiscoverer.java:91) ~[spring-data-commons-2.5.5.jar!/:2.5.5]
    at org.springframework.data.mapping.model.PreferredConstructorDiscoverer$Discoverers$1.discover(PreferredConstructorDiscoverer.java:134) ~[spring-data-commons-2.5.5.jar!/:2.5.5]
    at org.springframework.data.mapping.model.PreferredConstructorDiscoverer.discover(PreferredConstructorDiscoverer.java:79) ~[spring-data-commons-2.5.5.jar!/:2.5.5]
    at org.springframework.data.mapping.model.BasicPersistentEntity.<init>(BasicPersistentEntity.java:112) ~[spring-data-commons-2.5.5.jar!/:2.5.5]
    at org.springframework.data.mongodb.core.mapping.BasicMongoPersistentEntity.<init>(BasicMongoPersistentEntity.java:77) ~[spring-data-mongodb-3.2.5.jar!/:3.2.5]
    at org.springframework.data.mongodb.core.mapping.MongoMappingContext.createPersistentEntity(MongoMappingContext.java:91) ~[spring-data-mongodb-3.2.5.jar!/:3.2.5]
    at org.springframework.data.mongodb.core.mapping.MongoMappingContext.createPersistentEntity(MongoMappingContext.java:40) ~[spring-data-mongodb-3.2.5.jar!/:3.2.5]
    at org.springframework.data.mapping.context.AbstractMappingContext.doAddPersistentEntity(AbstractMappingContext.java:387) ~[spring-data-commons-2.5.5.jar!/:2.5.5]
    at org.springframework.data.mapping.context.AbstractMappingContext.addPersistentEntity(AbstractMappingContext.java:365) ~[spring-data-commons-2.5.5.jar!/:2.5.5]
    at java.base/java.util.Collections$SingletonSet.forEach(Collections.java:4905) ~[na:na]
    at org.springframework.data.mapping.context.AbstractMappingContext$PersistentPropertyCreator.createAndRegisterProperty(AbstractMappingContext.java:568) ~[spring-data-commons-2.5.5.jar!/:2.5.5]
    at org.springframework.data.mapping.context.AbstractMappingContext$PersistentPropertyCreator.doWith(AbstractMappingContext.java:526) ~[spring-data-commons-2.5.5.jar!/:2.5.5]
    at org.springframework.util.ReflectionUtils.doWithFields(ReflectionUtils.java:710) ~[spring-core-5.3.10.jar!/:5.3.10]
    at org.springframework.data.mapping.context.AbstractMappingContext.doAddPersistentEntity(AbstractMappingContext.java:401) ~[spring-data-commons-2.5.5.jar!/:2.5.5]
    at org.springframework.data.mapping.context.AbstractMappingContext.addPersistentEntity(AbstractMappingContext.java:365) ~[spring-data-commons-2.5.5.jar!/:2.5.5]
    at org.springframework.data.mapping.context.AbstractMappingContext.getPersistentEntity(AbstractMappingContext.java:258) ~[spring-data-commons-2.5.5.jar!/:2.5.5]
    at org.springframework.data.mapping.context.AbstractMappingContext.getPersistentEntity(AbstractMappingContext.java:201) ~[spring-data-commons-2.5.5.jar!/:2.5.5]
    at org.springframework.data.mapping.context.AbstractMappingContext.getPersistentEntity(AbstractMappingContext.java:87) ~[spring-data-commons-2.5.5.jar!/:2.5.5]
    at org.springframework.data.mapping.context.MappingContext.getRequiredPersistentEntity(MappingContext.java:73) ~[spring-data-commons-2.5.5.jar!/:2.5.5]
    at org.springframework.data.mongodb.repository.support.MongoRepositoryFactory.getEntityInformation(MongoRepositoryFactory.java:160) ~[spring-data-mongodb-3.2.5.jar!/:3.2.5]
    at org.springframework.data.mongodb.repository.support.MongoRepositoryFactory.getTargetRepository(MongoRepositoryFactory.java:134) ~[spring-data-mongodb-3.2.5.jar!/:3.2.5]
    at org.springframework.data.repository.core.support.RepositoryFactorySupport.getRepository(RepositoryFactorySupport.java:319) ~[spring-data-commons-2.5.5.jar!/:2.5.5]
    at org.springframework.data.repository.core.support.RepositoryFactoryBeanSupport.lambda$afterPropertiesSet$5(RepositoryFactoryBeanSupport.java:323) ~[spring-data-commons-2.5.5.jar!/:2.5.5]
    at org.springframework.data.util.Lazy.getNullable(Lazy.java:230) ~[spring-data-commons-2.5.5.jar!/:2.5.5]
    at org.springframework.data.util.Lazy.get(Lazy.java:114) ~[spring-data-commons-2.5.5.jar!/:2.5.5]
    at org.springframework.data.repository.core.support.RepositoryFactoryBeanSupport.afterPropertiesSet(RepositoryFactoryBeanSupport.java:329) ~[spring-data-commons-2.5.5.jar!/:2.5.5]
    at org.springframework.data.mongodb.repository.support.MongoRepositoryFactoryBean.afterPropertiesSet(MongoRepositoryFactoryBean.java:119) ~[spring-data-mongodb-3.2.5.jar!/:3.2.5]
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1863) ~[spring-beans-5.3.10.jar!/:5.3.10]
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1800) ~[spring-beans-5.3.10.jar!/:5.3.10]
    ... 50 common frames omitted

Even I removed lombok, so we should rollback again to Java 1.8?:)即使我删除了 lombok,所以我们应该再次回滚到 Java 1.8?:)

As I understand we need add following Java OPTs params:据我了解,我们需要添加以下 Java OPT 参数:

 - JVM_OPTS=  --add-exports=java.naming/com.sun.jndi.ldap=ALL-UNNAMED --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.lang.invoke=ALL-UNNAMED --add-opens=java.base/java.io=ALL-UNNAMED --add-opens=java.base/java.security=ALL-UNNAMED --add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.management/javax.management=ALL-UNNAMED --add-opens=java.naming/javax.naming=ALL-UNNAMED

for example I added in docker compose.例如我在 docker compose 中添加。

I think soon Spring boot/JakartaEE will upgrade their configurations.我想很快 Spring boot/JakartaEE 就会升级它们的配置。

Have same issue.有同样的问题。 Don't use gson mapper.不要使用 gson 映射器。 Remove next line from application.properties file.从 application.properties 文件中删除下一行。

spring.mvc.converters.preferred-json-mapper=gson

I excluded gson the first and added mapper:我排除了第一个 gson 并添加了映射器:

@Configuration
public class JacksonOffsetDateTimeMapper {

    @Primary
    @Bean
    public ObjectMapper objectMapper() {

        ObjectMapper mapper = new ObjectMapper();
        mapper.registerModule(new JavaTimeModule());
        mapper.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS);
        SimpleModule simpleModule = new SimpleModule();

        mapper.registerModule(simpleModule);
        return mapper;
    }
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 使用杰克逊310 +弹簧启动,得到错误“无法从字符串反序列化类型为java.time.LocalDateTime的值” - Get error “Can not deserialize value of type java.time.LocalDateTime from String” with jackson 310 + Spring boot Spring Boot-如何为“ java.time.LocalDateTime”类创建自定义序列化 - Spring Boot - How to create a custom serialization for “ java.time.LocalDateTime” class 如何使 Spring Data Elasticsearch 与 java.time.LocalDateTime 一起工作以获取日期 - How to make Spring Data Elasticsearch work with java.time.LocalDateTime for date DynamoDBMapper for java.time.LocalDateTime - DynamoDBMapper for java.time.LocalDateTime Android java.time.LocalDateTime - Android java.time.LocalDateTime 导入java.time.LocalDateTime时无法编译JSP - JSP Unable to compile when importing java.time.LocalDateTime Apache Cassandra的Spring Data将java.time.LocalDateTime转换为UTC - Spring Data for Apache Cassandra converts java.time.LocalDateTime to UTC java.time.LocalDateTime,多条时间线? - java.time.LocalDateTime, multiple time lines? 克隆java.time.LocalDateTime的最佳方法 - Best way to clone java.time.LocalDateTime 我的程序出现java.time.LocalDateTime错误 - java.time.LocalDateTime error with my program
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM