无法访问类 com.apple.eawt.Application(在模块 java.desktop 中),因为模块 java.desktop 不会将 com.apple.eawt 导出到未命名模块

Dou*_*oug 4 java macos jar

我正在尝试使用以下命令在 MacOS Monterrey 上使用 OpenJDK执行名为fakeSMPTServer的 JAR 文件:

java -jar fakeSMTP-2.0.jar
Run Code Online (Sandbox Code Playgroud)

我收到错误:

03 Apr 2023 10:04:51 ERROR com.nilhcem.fakesmtp.core.exception.UncaughtExceptionHandler - 
java.lang.IllegalAccessError: class com.nilhcem.fakesmtp.FakeSMTP$1 (in unnamed module @0x5db54e92) cannot access class com.apple.eawt.Application (in module java.desktop) because module java.desktop does not export com.apple.eawt to unnamed module @0x5db54e92
    at com.nilhcem.fakesmtp.FakeSMTP$1.run(FakeSMTP.java:80) ~[fakeSMTP-2.0.jar:na]
    at java.desktop/java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:318) ~[na:na]
    at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:773) ~[na:na]
    at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:720) ~[na:na]
    at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:714) ~[na:na]
    at java.base/java.security.AccessController.doPrivileged(AccessController.java:399) ~[na:na]
    at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86) ~[na:na]
    at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:742) ~[na:na]
    at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203) ~[na:na]
    at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124) ~[na:na]
    at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113) ~[na:na]
    at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109) ~[na:na]
    at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101) ~[na:na]
    at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:90) ~[na:na]
Run Code Online (Sandbox Code Playgroud)

以下是 java --version 的输出:

openjdk 19.0.2 2023-01-17
OpenJDK Runtime Environment Homebrew (build 19.0.2)
OpenJDK 64-Bit Server VM Homebrew (build 19.0.2, mixed mode, sharing)
Run Code Online (Sandbox Code Playgroud)

Dou*_*oug 7

这是Java 更高版本的一个已知问题 [ 1 ] [ 2 ]。

解决方案是允许导出 com.apple.eawt。这可以通过将启动命令调整为以下内容来完成:

java --add-exports java.desktop/com.apple.eawt=ALL-UNNAMED -jar fakeSMTP-2.0.jar
Run Code Online (Sandbox Code Playgroud)