У меня есть проект spring-boot с Java 11. Проект зависит от redis, поэтому я включил зависимость spring-boot-starter-data-redis в pom.xml.
В Spring-data-redis jar есть класс с именем JedisClientUtils, который имеет модификатор доступа по умолчанию на уровне класса.
Когда я запускаю этот проект, используя mvn spring-boot: run, я получаю ошибку NoClassDefFound для класса JedisClientUtils.
При отладке проблемы я обнаружил, что тот же проект успешно выполняется при использовании Java 8.
Мой pom.xml имеет плагин следующим образом:
<build>
<finalName>${war.name}</finalName>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>11</source>
<target>11</target>
</configuration>
<dependencies>
<dependency>
<!-- update compiler plugin dependency on ASM for Java 11 compatibility -->
<groupId>org.ow2.asm</groupId>
<artifactId>asm</artifactId>
<version>6.2</version>
</dependency>
</dependencies>
</plugin>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
Есть ли что-то еще необходимое для создания проекта Java 11 с классами доступа по умолчанию
Журналы для справки:
java.lang.reflect.InvocationTargetException
в jdk.internal.reflect.NativeMethodAccessorImpl.invoke0 (собственный метод)
в jdk.internal.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:62)
в jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43)
в java.lang.reflect.Method.invoke (Method.java:566)
в org.springframework.boot.maven.AbstractRunMojo $ LaunchRunner.run (AbstractRunMojo.java:558)
at java.lang.Thread.run (Thread.java:834) Причина: java.lang.NoClassDefFoundError: Не удалось инициализировать класс
org.springframework.data.redis.connection.jedis.JedisClientUtils
в org.springframework.data.redis.connection.jedis.JedisConnection.isQueueing
(JedisConnection.java:339)
версия Spring-boot-data-redis: 2.1.1.RELEASE
jedis.version: 2.9.0