Классы с доступом по умолчанию приводят к ошибке NoClassDefFound во время выполнения в весеннем проекте загрузки для Java 11 - PullRequest
1 голос
/ 10 июля 2019

У меня есть проект 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

...