Install4J无法在Mac OS X上启动

时间:2018-01-22 00:48:07

标签: install4j

使用JabRef,我们遇到一种奇怪的情况,一些用户在启动JabRef时遇到以下错误

error message

我们不会在我们的应用程序中发送JRE,而是依赖于用户机器上安装的Java。

关于这个特殊错误我们有很长的issue on GitHub,尽管我们付出了很多努力,但似乎我们找不到问题的根源。特别是,因为没有一个开发者可以重现它。幸运的是,遇到此错误的用户之一非常友好地提供了有关其计算机的所有信息:

$ java -version
java version "1.8.0_161"
Java(TM) SE Runtime Environment (build 1.8.0_161-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.161-b12, mixed mode)

$ which java
/usr/bin/java

$ ls -l /usr/bin/java
lrwxr-xr-x 1 root wheel 74 Aug 14 12:09 /usr/bin/java -> /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/java

$ /usr/libexec/java_home -V
Matching Java Virtual Machines (2):
1.8.0_161, x86_64:  "Java SE 8" /Library/Java/JavaVirtualMachines/jdk1.8.0_161.jdk/Contents/Home
1.8.0_121, x86_64:  "Java SE 8" /Library/Java/JavaVirtualMachines/jdk1.8.0_121.jdk/Contents/Home

$ echo $JAVA_HOME
/Library/Java/JavaVirtualMachines/jdk1.8.0_161.jdk/Contents/Home

$ echo $JDK_HOME
/Library/Java/JavaVirtualMachines/jdk1.8.0_161.jdk/Contents/Home

我要求此特定用户提供INSTALL4J_LOG,以便我们可以将{4}}上的Install4J的日志文件与其失败的my machine进行比较。 我的机器运行OS X 10.13.2,用户系统是OS X 10.12.6。

它们之间有两个主要区别。第一个区别是,当我调用JabRef启动器时,它立即告诉我搜索Java的地方的顺序:

2018-01-24 02:10:14.437 JavaApplicationStub[4846:345347] -[Launcher findJavaBundle:] [Line 479] search sequence (
    EPATH,
    Y,
    "EJAVA_HOME",
    "EJDK_HOME"
)

这正是我们在Install4J中配置的顺序

img

在用户日志文件中,此部分完全丢失。但是,它并不重要,因为JRE / JDK很少包含在$PATH变量中。接下来要检查的是默认位置,这将首先在Library/Internet\ Plug-Ins/JavaAppletPlugin.plugin中找到JRE。 因此,在我的机器和用户机器上,JabRef将使用此JRE而不是任何额外安装的JDK。

现在,可能存在更重要的差异。在用户的机器上,似乎JRE需要解压缩,这对我来说不会发生:

2018-01-23 12:27:08.320 JavaApplicationStub[40695:1133965] -[Launcher findJavaBundle:] [Line 474] Running unpacker
2018-01-23 12:27:08.323 JavaApplicationStub[40695:1133965] +[Unpacker unpack:withProgress:] [Line 24] found ()
2018-01-23 12:27:08.323 JavaApplicationStub[40695:1133965] +[Unpacker unpack:withProgress:] [Line 24] found ()

之后,日志看起来很相似,但是当最终调用JRE时,在用户的机器上找不到它,我们收到错误消息

2018-01-23 12:27:08.328 JavaApplicationStub[40695:1133965] int launcher_main(int, char **) [Line 925] Could not load JRE from The bundle “Java SE 8” couldn’t be loaded because its executable couldn’t be located..: (
    0   CoreFoundation                      0x00007fff8ff882cb __exceptionPreprocess + 171
    1   libobjc.A.dylib                     0x00007fffa4d9e48d objc_exception_throw + 48
    2   CoreFoundation                      0x00007fff90006c3d +[NSException raise:format:] + 205
    3   JavaApplicationStub                 0x0000000100008644 -[Launcher launch] + 468
    4   JavaApplicationStub                 0x0000000100008ef5 launcher_main + 645
    5   JavaApplicationStub                 0x0000000100009062 main + 34
    6   JavaApplicationStub                 0x0000000100001504 start + 52
)

现在,我不确定为什么需要解压缩,以及是否可以通过特定的JRE或不同的Mac OS版本来解释。

无论如何,我已要求用户安装Oracle JRE 1.8.0_161,以便我们都拥有完全相同的Java,如果能解决问题,我会报告。

然而,有人明白为什么Install4J发射器会崩溃吗?

0 个答案:

没有答案
相关问题