Я связываю JRE с моим приложением JavaFX на Mac, используя gradle-macappbundle .Я пытаюсь уменьшить размер JRE, поэтому мне не нужно включать все ~ 200 МБ.Я следовал инструкциям в Java8 README , чтобы удалить некоторые дополнительные компоненты.
После того, как плагин macappbundle создает .app, я хочу запустить Proguard на JRE (я используюGradle плагин для него), чтобы удалить еще больше неиспользуемых классов.
Мои текущие правила Proguard:
task shrinkJRE(type: ProGuardTask, dependsOn: 'createApp') {
injars "build/macApp/"
outjars "build/libs/pro/"
keep "class java.** { *; }"
ignorewarnings()
dontobfuscate()
dontoptimize()
}
Это производит JRE около 45 МБ.
Но после выполнения 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, так какие же классы мне может понадобиться "сохранить"?