使用 install4j 5.1.12 将应用程序部署到 Windows、Linux 和 OS X。它适用于 Windows 和 Linux,但在 OS X 10.9 上,安装程序在准备好 install4j 助手后挂起。 我使用的是捆绑的 Oracle JRE 1.7.0_60,可以在 install4j 中下载。
如何解决这个问题?
我应该补充一点,我尝试了几种方法来获取更多信息:
- 调试安装程序可以运行并安装!
- 禁用代码签名没有帮助
- 使用不同的 JRE(我们需要使用 Oracle、1.7.0_55、1.8.0_5)没有帮助
- 禁用缩小运行时并没有帮助
- 禁用尝试获取 root 权限的选项没有帮助
- 使用不同的包装选项没有帮助
- 使用非捆绑的预安装 Oracle JRE 不起作用
这是 jstack 关于挂起安装程序过程的说法:
localhost:~ user$ jstack 1540
2014-07-07 12:00:31
Full thread dump Java HotSpot(TM) 64-Bit Server VM (24.60-b09 mixed mode):
"Attach Listener" daemon prio=5 tid=0x00007fd819d10000 nid=0x6c37 waiting on condition [0x0000000000000000]
java.lang.Thread.State: RUNNABLE
"AWT-AppKit" daemon prio=5 tid=0x00007fd819bb9800 nid=0x303 runnable [0x0000000000000000]
java.lang.Thread.State: RUNNABLE
"Service Thread" daemon prio=5 tid=0x00007fd8198a8800 nid=0x4503 runnable [0x0000000000000000]
java.lang.Thread.State: RUNNABLE
"C2 CompilerThread1" daemon prio=5 tid=0x00007fd8198a8000 nid=0x4303 waiting on condition [0x0000000000000000]
java.lang.Thread.State: RUNNABLE
"C2 CompilerThread0" daemon prio=5 tid=0x00007fd81989f000 nid=0x4103 waiting on condition [0x0000000000000000]
java.lang.Thread.State: RUNNABLE
"Signal Dispatcher" daemon prio=5 tid=0x00007fd819899800 nid=0x3f03 runnable [0x0000000000000000]
java.lang.Thread.State: RUNNABLE
"Finalizer" daemon prio=5 tid=0x00007fd819865000 nid=0x2b03 in Object.wait() [0x00000001081b6000]
java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
- waiting on <0x00000007dae05630> (a java.lang.ref.ReferenceQueue$Lock)
at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:135)
- locked <0x00000007dae05630> (a java.lang.ref.ReferenceQueue$Lock)
at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:151)
at java.lang.ref.Finalizer$FinalizerThread.run(Finalizer.java:209)
"Reference Handler" daemon prio=5 tid=0x00007fd81985f000 nid=0x2903 in Object.wait() [0x00000001080b3000]
java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
- waiting on <0x00000007dae051b8> (a java.lang.ref.Reference$Lock)
at java.lang.Object.wait(Object.java:503)
at java.lang.ref.Reference$ReferenceHandler.run(Reference.java:133)
- locked <0x00000007dae051b8> (a java.lang.ref.Reference$Lock)
"main" prio=5 tid=0x00007fd819811000 nid=0x1b03 runnable [0x00000001048fd000]
java.lang.Thread.State: RUNNABLE
at java.lang.ClassLoader$NativeLibrary.load(Native Method)
at java.lang.ClassLoader.loadLibrary1(ClassLoader.java:1965)
- locked <0x00000007dae04ec0> (a java.util.Vector)
- locked <0x00000007dae04f18> (a java.util.Vector)
at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1890)
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1851)
at java.lang.Runtime.load0(Runtime.java:795)
- locked <0x00000007dae175d0> (a java.lang.Runtime)
at java.lang.System.load(System.java:1062)
at java.lang.ClassLoader$NativeLibrary.load(Native Method)
at java.lang.ClassLoader.loadLibrary1(ClassLoader.java:1965)
- locked <0x00000007dae04ec0> (a java.util.Vector)
- locked <0x00000007dae04f18> (a java.util.Vector)
at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1890)
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1872)
at java.lang.Runtime.loadLibrary0(Runtime.java:849)
- locked <0x00000007dae175d0> (a java.lang.Runtime)
at java.lang.System.loadLibrary(System.java:1088)
at sun.security.action.LoadLibraryAction.run(LoadLibraryAction.java:67)
at sun.security.action.LoadLibraryAction.run(LoadLibraryAction.java:47)
at java.security.AccessController.doPrivileged(Native Method)
at java.awt.Toolkit.loadLibraries(Toolkit.java:1653)
at java.awt.Toolkit.<clinit>(Toolkit.java:1682)
at java.awt.EventQueue.invokeAndWait(EventQueue.java:1251)
at javax.swing.SwingUtilities.invokeAndWait(SwingUtilities.java:1347)
at com.install4j.runtime.installer.Installer.getScreenExecutor(Unknown Source)
at com.install4j.runtime.installer.Installer.runInProcess(Unknown Source)
at com.install4j.runtime.installer.Installer.main(Unknown Source)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at com.exe4j.runtime.LauncherEngine.launch(Unknown Source)
at com.install4j.runtime.launcher.MacLauncher.main(Unknown Source)
"VM Thread" prio=5 tid=0x00007fd81985c000 nid=0x2703 runnable
"VM Periodic Task Thread" prio=5 tid=0x00007fd81989a800 nid=0x4703 waiting on condition
JNI global references: 239
最佳答案
安装程序选项中设置的自定义 OS X 图标文件已损坏。用固定版本替换该文件解决了这个问题。
关于macos - 准备助手后 install4j 安装程序在 OS X 上挂起,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24608418/