使用Proguard缩小后的JRE致命错误

时间:2018-11-24 23:35:41

标签: java jvm proguard

我正在使用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所需的一些类,那么我可能还需要“保留”哪些类?

0 个答案:

没有答案