【问题标题】:VMWare + JavaFX + Mac "hello world" app fails to install/executeVMWare + JavaFX + Mac“hello world”应用程序无法安装/执行
【发布时间】:2015-04-20 15:55:13
【问题描述】:

在对所有以前的帖子(在本网站和其他地方)进行了大量研究之后,我在此处发布关于在 Mac OSX 10.10 的 VMWare 封装实例中运行 JavaFX 应用程序(使用 JWrapper 作为启动器开发)的问题。 [注意:在 2015-02-25 编辑了前一句和这篇帖子的标题,以添加对 VMWare 的引用。]

在我的大型 Java 1.8.0_25 应用程序无法在 Mac OSX v10.10.1 中安装和启动后,我使用 3 行“Hello World”JavaFX 应用程序重现了该问题。

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

<JvmOption>-Djavafx.macosx.embedded=true</JvmOption>
<MustFork>true</MustFork>

在这两种情况下,当尝试在 Mac 上安装时,JWrapper 初始屏幕会按预期显示,但随后消失,并且应用程序本身无法启动。

以下是 (1) zip 文件的链接,其中包含来自 Mac OSX v10.10.1 上尝试的“HelloWorldFX”安装的所有日志,以及 (2) 包含应用程序 JWrapper 构建过程中的日志和“build”文件夹的 zip 文件.请注意,此应用程序可以在 Windows 和 Ubuntu 中正常安装和运行。

日志: https://googledrive.com/host/0B0skoeyva4KiUDZBS1FSUXo4RUU/mac_logs.zip

构建文件夹(300MB): https://googledrive.com/host/0B0skoeyva4KiUDZBS1FSUXo4RUU/helloWorldFX_build_folder.zip

以下是重点:

HelloWorldFX 代码(几乎是整个应用程序):

public void start(Stage stage) {
    stage.setTitle("Hello World FX");
    stage.setScene
        (new Scene(new StackPane(new Button("Hello World FX")), 600, 250));
    stage.show();
}

我完整的 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 上“Wrapper”日志文件的不祥消息:

+1 [BundleLoader] Could not load JRE bundle!

Mac 上“Generic Updater”日志文件中的一个奇怪的行,其中文件名显然被 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”日志文件的全部内容(只是在尝试禁用 App 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

任何帮助解决此问题将不胜感激!

【问题讨论】:

    标签: macos javafx vmware jwrapper


    【解决方案1】:

    所有这些启动看起来都没有问题,HelloWorldFX3 日志完全生成的事实表明该应用确实启动了。

    消息“禁用 App Nap”只是 JWrapper 在移交控制权之前打印的最后一条消息,因此并不表示它无法启动。

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

    您的应用程序的主要方法是什么,您能否输入打印输出并检查它是否到达日志中的那个点?

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

    【讨论】:

    • 既然你提到了它,是的,有一个前缀为“hs_err_pid”的文件。这是它的副本的链接:googledrive.com/host/0B0skoeyva4KiUDZBS1FSUXo4RUU/… hs_err_pid 文件的内容对我来说毫无意义,比以往任何时候都更深入兔子洞。顺便说一句,请原谅我没有提及:当我尝试在 Mac 上执行应用程序时,会出现一个标准的 Mac 窗口,说“HelloWorldFX3 意外退出。单击重新打开以再次打开应用程序...... [等等]” ,所以肯定出了问题(在 OSX 眼中)。
    • 另外一个问题:你们 JWrapper 的人是否有一个简单的(helloWorld-ish)JavaFX 应用程序作为您的测试例程的一部分?如果是这样,您使用的是什么版本的 Java? (如果没有,请设置一个。) -- 谢谢!!
    • 顺便说一句,使用 Java 1.8.0_31(Oracle 的最新版本)重复了整个构建和安装过程。遇到完全相同的结果——不高兴。
    • 更多:正如您所建议的,我将 println 语句放入 main 方法中。这会在输出中打印出来,因此主方法已成功调用(在调用任何 JavaFX 类/方法之前)。我的启动方法(请参阅上面的代码 sn-p)从未达到,因此在 JavaFX 环境的实例化过程中显然有些问题。 (查看 hs_err_pid 输出表明,当 JavaFX“QuantumRenderer”调用本机 OSX 函数时,事情可能会变糟。)
    • 多次 google 搜索让我看到了 12 月发布的这个错误报告,它的 hs_err_pid 输出看起来(在我未经训练的眼睛看来)与我的相似:bugs.openjdk.java.net/browse/JDK-8067271
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-25
    • 1970-01-01
    • 2012-08-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多