无法访问“jdk.internal.misc.Unsafe”,请使用 --add-exports java.base/jdk.internal.misc=ALL-UNNAMED 启动虚拟机

问题描述 投票:0回答:1

将 Ecllipse 存储与 micrornaut 应用程序一起使用时遇到以下问题:

Could not obtain access to "jdk.internal.misc.Unsafe", please start the VM with --add-exports java.base/jdk.internal.misc=ALL-UNNAMED

根据 microstream 常见问题解答 - https://docs.microstream.one/manual/storage/faq/java-features.html这是一个已知问题

MicroStream 可以处理记录吗?

是的,但由于 Java 15 中引入的记录反射限制,必须将导出添加到 VM 参数中:

--add-exports java.base/jdk.internal.misc=ALL-UNNAMED

这个问题与java记录有关,我在根目录中有如下记录

public record Country(UUID id,
                      String name,
                      String flagUrl,
                      Optional<Integer> matchPlayed,
                      Optional<Integer> win,
                      Optional<Integer> draw,
                      Optional<Integer> lost,
                      Optional<Integer> points) {
}

我正在使用 Kotlin 版本的 build.gradle,根据建议我需要添加 JVM 变量,但是我做了如下

application {
    mainClass = "fete.bird.EuroApi"
    
    applicationDefaultJvmArgs = listOf(
        "--add-exports", "java.base/jdk.internal.misc=ALL-UNNAMED"
    )
}

仍然面临同样的问题,但在 JUnit 测试期间我设置了以下参数,一切都按预期工作

tasks.test {
    jvmArgs("--add-exports=java.base/jdk.internal.misc=ALL-UNNAMED")
}

更新

添加此功能可以很好地使用

./gradlew run

 tasks.withType<JavaExec> {
    jvmArgs("--add-exports=java.base/jdk.internal.misc=ALL-UNNAMED")
}

但是不使用IntelllJ,如何在intellj中设置参数?

java intellij-idea micronaut microstream eclipse-store
1个回答
0
投票

与Intellj

添加

--add-exports=java.base/jdk.internal.misc=ALL-UNNAMED

进入虚拟机选项

enter image description here

使用 Gradle Run

tasks.withType<JavaExec> {
    jvmArgs("--add-exports=java.base/jdk.internal.misc=ALL-UNNAMED")
}
© www.soinside.com 2019 - 2024. All rights reserved.