You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MacOS Monterey运行fakeSMTP-2.0.jar遇Java模块访问错误求助

解决MacOS Monterey下OpenJDK运行fakeSMTP-2.0.jar的模块访问错误

问题场景

在MacOS Monterey系统中,使用OpenJDK 19执行fakeSMTP-2.0.jar,执行命令:

java -jar fakeSMTP-2.0.jar

运行后抛出模块访问错误:

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]

当前使用的Java版本:

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)

解决方案

错误根源是Java 9及以上引入的模块化系统,java.desktop模块未将com.apple.eawt包暴露给未命名模块(fakeSMTP-2.0.jar属于未模块化的JAR),导致访问权限被限制。

方法1:添加模块访问参数

在启动命令中加入--add-exports参数,允许java.desktop模块将指定包暴露给所有未命名模块:

java --add-exports java.desktop/com.apple.eawt=ALL-UNNAMED -jar fakeSMTP-2.0.jar

如果运行后仍出现com.apple.eawt.event相关的访问错误,追加对应参数:

java --add-exports java.desktop/com.apple.eawt=ALL-UNNAMED --add-exports java.desktop/com.apple.eawt.event=ALL-UNNAMED -jar fakeSMTP-2.0.jar

方法2:降级到Java 8

Java 8没有模块化系统,不存在这类访问限制。如果无需使用Java 19的特性,可安装OpenJDK 8并切换版本后重新执行原命令。

内容的提问来源于stack exchange,提问作者Doug

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 22:45:41