我正在使用gradle-macappbundle在Mac上将JRE与JavaFX应用程序捆绑在一起。我正在尝试减小JRE的大小,因此不必包括完整的〜200 MB。我已经按照Java8 README中的说明删除了一些可选组件。
macappbundle插件创建.app之后,我想在JRE上运行Proguard(我正在使用gradle插件)以删除更多未使用的类。
我当前的保镖规则:
task shrinkJRE(type: ProGuardTask, dependsOn: 'createApp') {
injars "build/macApp/"
outjars "build/libs/pro/"
keep "class java.** { *; }"
ignorewarnings()
dontobfuscate()
dontoptimize()
}
这将产生约45 MB的JRE。
但是在chmod +x
可执行文件上执行JavaAppLauncher
并运行它之后,它显示此错误:
#
# A fatal error has been detected by the Java Runtime Environment:
#
# SIGSEGV (0xb) at pc=0x000000010c6025e4, pid=86901, tid=0x0000000000002303
#
# JRE version: (8.0_181-b13) (build )
# Java VM: Java HotSpot(TM) 64-Bit Server VM (25.181-b13 mixed mode bsd-amd64 compressed oops)
# Problematic frame:
# V [libjvm.dylib+0x5825e4] universe_post_init()+0x6a9
#
# Core dump written. Default location: /cores/core or core.86901
#
# An error report file with more information is saved as:
# /Users/rishiraja/hs_err_pid86901.log
#
# If you would like to submit a bug report, please visit:
# http://bugreport.java.com/bugreport/crash.jsp
#
Abort trap: 6 (core dumped)
有人可以帮助我找到此错误的原因吗?
我的猜测是我缺少JRE所需的一些类,那么我可能还需要“保留”哪些类?