compose-webview-multiplatform icon indicating copy to clipboard operation
compose-webview-multiplatform copied to clipboard

java.lang.IllegalAccessError: class org.cef.browser.mac.CefBrowserWindowMac (in unnamed module @0x379531e0) cannot access class sun.awt.AWTAccessor (in module java.desktop) because module java.desktop does not export sun.awt to unnamed module @0x379531e0

Open deepakgupta881 opened this issue 1 year ago • 4 comments

system: mac Os

It works normally when we run the application. ./gradlew run

compose.desktop {
  application {
    // all your other configuration, etc

    jvmArgs("--add-opens", "java.desktop/sun.awt=ALL-UNNAMED")
    jvmArgs("--add-opens", "java.desktop/java.awt.peer=ALL-UNNAMED") // recommended but not necessary

    if (System.getProperty("os.name").contains("Mac")) {
      jvmArgs("--add-opens", "java.desktop/sun.lwawt=ALL-UNNAMED")
      jvmArgs("--add-opens", "java.desktop/sun.lwawt.macosx=ALL-UNNAMED")
    }
  }
}

However, creating the distributable build won't work for the desktop and throws the same error. Any help would be appreciated. Thanks!

deepakgupta881 avatar Oct 08 '24 08:10 deepakgupta881

Are you on Mac Silicon (Arm) or Mac x86 ? I can only get this working for x86, and for Silicon it never runs. I think my project can't continue at this point

lynnwilliam avatar Mar 01 '25 00:03 lynnwilliam

same problem. run by android studio and crash happen. run by ./gradlew run and everything is find

yang961226 avatar Jun 09 '25 07:06 yang961226

@lynnwilliam @yang961226 I was able to resolve it.

For distribution builds, add this inside the application block:

run {
    jvmArgs(
        "--add-opens=java.base/java.lang=ALL-UNNAMED",
        "--add-opens=java.desktop/sun.awt=ALL-UNNAMED",
        "--add-opens=java.desktop/sun.java2d=ALL-UNNAMED",
        "--add-opens=java.desktop/java.awt.peer=ALL-UNNAMED"
    )
    if (System.getProperty("os.name").contains("Mac")) {
        jvmArgs(
            "--add-opens=java.desktop/sun.lwawt=ALL-UNNAMED",
            "--add-opens=java.desktop/sun.lwawt.macosx=ALL-UNNAMED"
        )
    }
}

For debug builds, add this at the end:

afterEvaluate {
    tasks.withType<JavaExec> {
        jvmArgs(
            "--add-opens=java.base/java.lang=ALL-UNNAMED",
            "--add-opens=java.desktop/sun.awt=ALL-UNNAMED",
            "--add-opens=java.desktop/sun.java2d=ALL-UNNAMED",
            "--add-opens=java.desktop/java.awt.peer=ALL-UNNAMED"
        )
        if (System.getProperty("os.name").contains("Mac")) {
            jvmArgs(
                "--add-opens=java.desktop/sun.lwawt=ALL-UNNAMED",
                "--add-opens=java.desktop/sun.lwawt.macosx=ALL-UNNAMED"
            )
        }
    }
}

deepakgupta881 avatar Jun 11 '25 13:06 deepakgupta881

@deepakgupta881 wow!!!you save my life. It works!

yang961226 avatar Jun 13 '25 09:06 yang961226