Macos VMWare+JavaFX+Mac“hello world”应用程序无法安装/执行

Macos VMWare+JavaFX+Mac“hello world”应用程序无法安装/执行,macos,javafx,vmware,jwrapper,Macos,Javafx,Vmware,Jwrapper,我在这里发布之前在这个站点和其他地方发布了很多关于运行JavaFX应用程序的问题的帖子,这些应用程序是使用JWrapper作为Mac OSX 10.10的VMWare封装实例的启动器开发的。[注:于2015年2月25日编辑了前一句和本帖子的标题,以添加对VMWare的引用。] 在Mac OSX v10.10.1中安装和启动更大的Java 1.8.0_25应用程序失败后,我使用3行Hello World JavaFX应用程序复制了这个问题 在这两种情况下,我在JWrapper build parm

我在这里发布之前在这个站点和其他地方发布了很多关于运行JavaFX应用程序的问题的帖子,这些应用程序是使用JWrapper作为Mac OSX 10.10的VMWare封装实例的启动器开发的。[注:于2015年2月25日编辑了前一句和本帖子的标题,以添加对VMWare的引用。]

在Mac OSX v10.10.1中安装和启动更大的Java 1.8.0_25应用程序失败后,我使用3行Hello World JavaFX应用程序复制了这个问题

在这两种情况下,我在JWrapper build parm XML中使用的似乎是标准的面向Mac的参数设置:

<JvmOption>-Djavafx.macosx.embedded=true</JvmOption>
<MustFork>true</MustFork>
我的完整JWrapper构建参数:

<JWrapper>

    <!-- The name of the app bundle -->
    <BundleName>HelloWorldFX3</BundleName>

    <!-- The specification for one app within the bundle -->
    <App>
      <Name>HelloWorldFX3</Name>
      <LogoPNG>images/logo.png</LogoPNG>
      <MainClass>helloworldfx.HelloWorldFX</MainClass>
    </App>

    <SupportedLanguages>en</SupportedLanguages>

    <!-- App is a per-user app, it won't elevate and install for all users and the shared config folder will be per-user -->
    <InstallType>CurrentUser</InstallType>

    <!-- No <UpdateURL> element included here: only interested in **offline** installation -->

    <!-- Splash and Logo -->
    <SplashPNG>images/splash.png</SplashPNG>
    <BundleLogoPNG>images/logo.png</BundleLogoPNG>

    <!-- JVM options (e.g. extra memory) -->
    <JvmOptions>
     <JvmOption>-Xmx256m</JvmOption>

     <!-- following Mac-related option IS used in this build: for info, see: http://www.jwrapper.com/old-forum.html#nabble-td409 -->
     <JvmOption>-Djavafx.macosx.embedded=true</JvmOption>

    </JvmOptions>

    <!-- The JREs JWrapper should use for Windows, Linux32, Linux64... -->
    <Windows32JRE>jrepack18/win32/jre1.8.0_25</Windows32JRE>
    <Windows64JRE>jrepack18/win32/jre1.8.0_25</Windows64JRE>
    <Linux32JRE>jrepack18/linux/jre1.8.0_25</Linux32JRE>
    <Linux64JRE>jrepack18/linuxx64/jre1.8.0_25</Linux64JRE>
    <Mac64JRE>jrepack18/macos64/jre1.8.0_25.jre</Mac64JRE> 

    <!-- The files that the app wants to bundle, here we have just one which is a JAR file and we specify that it should be on the launch classpath -->
    <File classpath='yes'>helloWorldApp/HelloWorldFX.jar</File>

    <!-- NoStripJREs option required to avoiding stripping out of JavaFX classes! For info, see: http://www.jwrapper.com/old-forum.html#nabble-td89 -->
    <NoStripJREs>true</NoStripJREs> 
    <!-- This Mac-related option IS used in this build: -->
    <MustFork>true</MustFork>

 </JWrapper>
Mac上的通用更新程序日志文件中有一行奇怪的内容,其中一个文件名显然被JWrapper截断,导致出现“未找到文件”异常:

8574158 (+0) java.io.FileNotFoundException: /Users/admin/Library/Application Support/JWrapper-HelloWorldFX3/JWrapper-JWrapper-00033253833-complete/JWAppSpec- (No such file or directory)
Mac电脑上的HelloWorldFX日志文件在禁用应用程序Nap后或尝试禁用应用程序Nap时会全部消失:

8574542 (+0) STDOUT test
8574542 (+0) STDERR test
8574543 (+1) [LogFolderCleaner] Keeping Wrapper-2015-02-18-23-56-04-443.log
8574543 (+0) [LogFolderCleaner] Keeping HelloWorldFX3-HelloWorldFX3-2015-02-18-23-56-14-525.log
8574544 (+1) [LogFolderCleaner] Keeping GenericUpdater-2015-02-18-23-56-13-488.log
8574545 (+1) [EDT Exception Printer] Catching all EDT and uncaught exceptions and printing
8574548 (+3) [JWrapperNative] Detected 64-bit architecture
8574548 (+0) [JWrapperNative] Detected Mac OS
8574551 (+3) [JWrapper] sun.java2d.dpiaware: null
8574558 (+7) [JWDetectedProxy] No proxy configuration found to load.
8574559 (+1) JVM Option: -Xmx256m
8574559 (+0) JVM Option: -Djavafx.macosx.embedded=true
8574559 (+0) [JWrapper] JVM Home: /Users/admin/Library/Application Support/JWrapper-HelloWorldFX3/JWrapper-Mac64JRE-00034082796-complete
8574573 (+14) [JWrapper] Wrote JVM Options OK
8574574 (+1) [JWrapper] Set app name to HelloWorldFX3
8574577 (+3) [JWrapper] Loading virtual app
8574577 (+0) [JWrapper] Got virtual app HelloWorldFX3
8574577 (+0) [JWrapper] Setting OS dock info
8574786 (+209) [JWrapper] Image: BufferedImage@5ef04b5: type = 6 ColorModel: #pixelBits = 32 numComponents = 4 color space = java.awt.color.ICC_ColorSpace@5f4da5c3 transparency = 3 has alpha = true isAlphaPre = false ByteInterleavedRaster: width = 256 height = 245 #numDataElements 4 dataOff[0] = 3
8574887 (+101) [JWrapper] Disabling App Nap

如果您能帮助解决此问题,我们将不胜感激

所有这些启动看起来都正常,HelloWorldFX3日志的生成表明应用确实启动了

消息“disableappnap”只是JWrapper在移交控制权之前打印的最后一条消息,这并不表示它无法启动

您是否在任何地方生成任何hs_err_pid文件

你的应用程序的主要方法是什么?比如,你是否能够输入打印输出,并在日志中检查它是否达到该点


在这一点上,我最好的猜测是,尽管您已经指定了NoStripJRE,但您可能还没有从构建文件夹中删除预构建的JRE归档文件?如果没有,JWrapper将继续使用这些组件,并且不会重建它们,您也不会有JavaFX组件来允许您的应用程序运行。我会建议移除这些,重建并再次尝试。除此之外,如果有一个hs_err_pid文件,它可能会有更多信息。

现在您提到了它,是的,有一个前缀为hs_err_pid的文件。这里有一个指向它的副本的链接:hs_err_pid文件的内容对我来说毫无意义,比我所经历的要深入得多。顺便说一句,请原谅我忽略了一点:当我试图在Mac上执行应用程序时,一个标准的Mac窗口确实会出现,显示HelloWorldFX3意外退出。单击“重新打开”再次打开应用程序。。。[etc.],所以在OSX看来肯定出了问题。还有一个问题:JWrapper的员工是否有一个简单的helloWorld-ish JavaFX应用程序作为测试例程的一部分?如果是这样,您使用的是什么Java版本?如果没有,请设置一个谢谢顺便说一句,使用Oracle的最新版本Java 1.8.031重复了整个构建和安装过程。遇到了完全相同的结果-没有乐趣。更多:正如您所建议的,我在main方法中放入了println语句。这将在输出中打印出来,因此在调用任何JavaFX类/方法之前,将成功调用main方法。我的启动方法see上面的代码片段从未到达过,所以在JavaFX环境的实例化过程中,事情显然是一团糟。查看hs_err_pid输出表明,当JavaFX QuantumRenderer调用本机OSX函数时,事情可能会变得糟糕。多次谷歌搜索导致我找到了这份12月发布的错误报告,其中有hs_err_pid输出,在我未经训练的眼睛看来与我的类似:
8574158 (+0) java.io.FileNotFoundException: /Users/admin/Library/Application Support/JWrapper-HelloWorldFX3/JWrapper-JWrapper-00033253833-complete/JWAppSpec- (No such file or directory)
8574542 (+0) STDOUT test
8574542 (+0) STDERR test
8574543 (+1) [LogFolderCleaner] Keeping Wrapper-2015-02-18-23-56-04-443.log
8574543 (+0) [LogFolderCleaner] Keeping HelloWorldFX3-HelloWorldFX3-2015-02-18-23-56-14-525.log
8574544 (+1) [LogFolderCleaner] Keeping GenericUpdater-2015-02-18-23-56-13-488.log
8574545 (+1) [EDT Exception Printer] Catching all EDT and uncaught exceptions and printing
8574548 (+3) [JWrapperNative] Detected 64-bit architecture
8574548 (+0) [JWrapperNative] Detected Mac OS
8574551 (+3) [JWrapper] sun.java2d.dpiaware: null
8574558 (+7) [JWDetectedProxy] No proxy configuration found to load.
8574559 (+1) JVM Option: -Xmx256m
8574559 (+0) JVM Option: -Djavafx.macosx.embedded=true
8574559 (+0) [JWrapper] JVM Home: /Users/admin/Library/Application Support/JWrapper-HelloWorldFX3/JWrapper-Mac64JRE-00034082796-complete
8574573 (+14) [JWrapper] Wrote JVM Options OK
8574574 (+1) [JWrapper] Set app name to HelloWorldFX3
8574577 (+3) [JWrapper] Loading virtual app
8574577 (+0) [JWrapper] Got virtual app HelloWorldFX3
8574577 (+0) [JWrapper] Setting OS dock info
8574786 (+209) [JWrapper] Image: BufferedImage@5ef04b5: type = 6 ColorModel: #pixelBits = 32 numComponents = 4 color space = java.awt.color.ICC_ColorSpace@5f4da5c3 transparency = 3 has alpha = true isAlphaPre = false ByteInterleavedRaster: width = 256 height = 245 #numDataElements 4 dataOff[0] = 3
8574887 (+101) [JWrapper] Disabling App Nap