为什么使用 Install4j 6 构建的 macOS 安装程序会在 JRE 10 中抛出 运行 次异常?

Why does macOS installer built with Install4j 6 throw run-time exception with JRE 10?

我得到以下 运行 时间异常 运行使用 Install4j 6.1.6,运行 JRE 10.0.2+13 构建的 macOS 安装程序:

java.lang.RuntimeException: java.lang.reflect.InvocationTargetException
    at com.install4j.runtime.installer.Installer.getScreenExecutor(Installer.java:105)
    at com.install4j.runtime.installer.Installer.runInProcess(Installer.java:58)
    at com.install4j.runtime.installer.Installer.main(Installer.java:46)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.base/java.lang.reflect.Method.invoke(Unknown Source)
    at com.exe4j.runtime.LauncherEngine.launch(LauncherEngine.java:65)
    at com.install4j.runtime.launcher.MacLauncher.main(MacLauncher.java:67)
Caused by: java.lang.reflect.InvocationTargetException
    at java.desktop/java.awt.EventQueue.invokeAndWait(Unknown Source)
    at java.desktop/java.awt.EventQueue.invokeAndWait(Unknown Source)
    at java.desktop/javax.swing.SwingUtilities.invokeAndWait(Unknown Source)
    at com.install4j.runtime.installer.Installer.getScreenExecutor(Installer.java:96)
    ... 8 more
Caused by: java.lang.NoClassDefFoundError: com/apple/eawt/ApplicationListener
    at java.base/java.lang.Class.forName0(Native Method)
    at java.base/java.lang.Class.forName(Unknown Source)
    at com.install4j.runtime.installer.frontend.WizardScreenExecutor.<init>(WizardScreenExecutor.java:49)
    at com.install4j.runtime.installer.frontend.InstallerWizardScreenExecutor.<init>(InstallerWizardScreenExecutor.java:18)
    at com.install4j.runtime.installer.Installer.run(Installer.java:99)
    at java.desktop/java.awt.event.InvocationEvent.dispatch(Unknown Source)
    at java.desktop/java.awt.EventQueue.dispatchEventImpl(Unknown Source)
    at java.desktop/java.awt.EventQueue.access0(Unknown Source)
    at java.desktop/java.awt.EventQueue.run(Unknown Source)
    at java.desktop/java.awt.EventQueue.run(Unknown Source)
    at java.base/java.security.AccessController.doPrivileged(Native Method)
    at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
    at java.desktop/java.awt.EventQueue.dispatchEvent(Unknown Source)
    at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
    at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
    at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
    at java.desktop/java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    at java.desktop/java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    at java.desktop/java.awt.EventDispatchThread.run(Unknown Source)
Caused by: java.lang.ClassNotFoundException: com.apple.eawt.ApplicationListener
    at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(Unknown Source)
    at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(Unknown Source)
    at java.base/java.lang.ClassLoader.loadClass(Unknown Source)
    ... 19 more

同一安装程序仅安装 JRE 8u161 即可正常工作。有没有办法绕过这个异常?

install4j 6 不适用于 Java 9+,您必须至少使用 install4j 7。