arcuri82
arcuri82

Reputation: 970

Maven Kotlin plugin with JDK 17 not working

Upgraded Kotlin from 1.5 to 1.8 today: build fails in JDK 17 due to:

java.lang.reflect.InaccessibleObjectException: Unable to make field protected java.io.OutputStream java.io.FilterOutputStream.out accessible: module java.base does not "opens java.io" to unnamed module @2ba9f986
        at java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:354)
        at java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:297)
        at java.base/java.lang.reflect.Field.checkCanSetAccessible(Field.java:178)
        at java.base/java.lang.reflect.Field.setAccessible(Field.java:172)
        at com.intellij.util.io.IOUtil.syncStream(IOUtil.java:217)

tried to add the following to my Maven configuration:

<plugin>
    <artifactId>kotlin-maven-plugin</artifactId>
    <groupId>org.jetbrains.kotlin</groupId>
    <version>${kotlin.version}</version>
    <configuration>
        <jvmTarget>${java.version}</jvmTarget>
        <args>
            <arg>"--add-opens java.base/java.io=ALL-UNNAMED"</arg>
        </args>
    </configuration>
</plugin>

but the problem is still there.

Official documentation does not seem to provide any info on this. Online search did not find much, apart from something about Gradle

Is there any Maven-plugin configuration to fix it? (ie build Kotlin 1.8 on JDK 17) or is that not supported?

Upvotes: 3

Views: 2350

Answers (1)

mascha
mascha

Reputation: 309

For our Kotlin project build with Maven, We have the following file .mvn/jvm.config in the project folder. The content should be as follows:

--add-opens=java.base/java.lang=ALL-UNNAMED
--add-opens=java.base/java.io=ALL-UNNAMED

Upvotes: 2

Related Questions