Kotlin 1.5.0 в мульти-модуле Maven: java.lang.UnsupportedClassVersionError

У меня есть многомодульный проект Maven. Мне пришлось импортировать maven-модуль Vader (который использует смесь Kotlin 1.5.0 и Java 11) и использовать его в качестве зависимости для одного из моих модулей, который использует исключительно java 11. Код компилируется хорошо, но во время выполнения я получаю эту ошибку : java.lang.UnsupportedClassVersionError: org/revcloud/vader/matchers/AnyMatchers has been compiled by a more recent version of the Java Runtime (class file version 59.0), this version of the Java Runtime only recognizes class file versions up to 55.0

Файл, для которого я получаю эту ошибку, является файл в моем модуле зависимостей. Я не получаю эту ошибку для файлов java. В модуле зависимости (vader) я убедился, что jvmTarget установлен на java 11, а jdkHome указывает на java 11. Я даже подтвердил, запустив что дает мне основные version: 55

Я не знаю, что мне не хватает, откуда это 59.0? Даже в моей системе только JDK 11, а JDK 15 не установлен.

ПФБ раздел pom.xml для проекта зависимости (vader). (Здесь тоже есть ломбок. Поэтому я сначала деломбок в target / delombok, а kotlin-maven-plugin берет исходники из этого места. Однако ни одна из аннотаций ломбока не используется в классах Kotlin)

      <build>
    <sourceDirectory>${project.build.directory}/delombok</sourceDirectory>
    <testSourceDirectory>${project.build.directory}/delombok-test</testSourceDirectory>
    <plugins>
        <plugin>
            <groupId>org.jetbrains.kotlin</groupId>
            <artifactId>kotlin-maven-plugin</artifactId>
            <version>${kotlin.version}</version>
            <configuration>
                <jvmTarget>${kotlin.compiler.jvmTarget}</jvmTarget>
                <jdkHome>${kotlin.compiler.jdkHome}</jdkHome>
            </configuration>
            <executions>
                <execution>
                    <id>compile</id>
                    <goals>
                        <goal>compile</goal>
                    </goals>
                    <configuration>
                        <sourceDirs>
                            <sourceDir>${project.build.directory}/delombok</sourceDir>
                        </sourceDirs>
                    </configuration>
                </execution>
                <execution>
                    <id>test-compile</id>
                    <goals>
                        <goal>test-compile</goal>
                    </goals>
                    <configuration>
                        <sourceDirs>
                            <sourceDir>${project.build.directory}/delombok-test</sourceDir>
                        </sourceDirs>
                    </configuration>
                </execution>
            </executions>
        </plugin>
        <plugin>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok-maven-plugin</artifactId>
            <version>${lombok.version}.0</version>
            <configuration>
                <encoding>UTF-8</encoding>
            </configuration>
            <executions>
                <execution>
                    <id>delombok</id>
                    <phase>generate-sources</phase>
                    <goals>
                        <goal>delombok</goal>
                    </goals>
                    <configuration>
                        <sourceDirectory>src/main/java</sourceDirectory>
                        <outputDirectory>${project.build.directory}/delombok</outputDirectory>
                        <addOutputDirectory>false</addOutputDirectory>
                    </configuration>
                </execution>
                <execution>
                    <id>delombok-test</id>
                    <phase>generate-test-sources</phase>
                    <goals>
                        <goal>delombok</goal>
                    </goals>
                    <configuration>
                        <sourceDirectory>src/test/java</sourceDirectory>
                        <outputDirectory>${project.build.directory}/delombok-test</outputDirectory>
                        <addOutputDirectory>false</addOutputDirectory>
                    </configuration>
                </execution>
            </executions>
        </plugin>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.8.1</version>
            <configuration>
                <source>${kotlin.compiler.jvmTarget}</source>
                <target>${kotlin.compiler.jvmTarget}</target>
            </configuration>
            <executions>
                <!-- Replacing default-compile as it is treated specially by maven -->
                <execution>
                    <id>default-compile</id>
                    <phase>none</phase>
                </execution>
                <!-- Replacing default-testCompile as it is treated specially by maven -->
                <execution>
                    <id>default-testCompile</id>
                    <phase>none</phase>
                </execution>
                <execution>
                    <id>java-compile</id>
                    <phase>compile</phase>
                    <goals>
                        <goal>compile</goal>
                    </goals>
                </execution>
                <execution>
                    <id>java-test-compile</id>
                    <phase>test-compile</phase>
                    <goals>
                        <goal>testCompile</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-jar-plugin</artifactId>
            <version>3.2.0</version>
        </plugin>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <version>3.0.0-M5</version>
        </plugin>
    </plugins>
</build>

1 ответ

Разобрался, пришлось изменить версию Target JVM для компилятора Kotlin в Intellij

Другие вопросы по тегам