【问题标题】:Mac OS, Java SplashMac 操作系统,Java 飞溅
【发布时间】:2011-02-11 00:33:33
【问题描述】:

我正在尝试将我的 Java 应用程序迁移到 Mac OS。
当应用程序启动时,应该会出现启动画面。

当我从终端运行应用程序时,它会像这样:
java -classpath /the/right/classpath/ -splash:images/splash.png myApp/Main
当我这样做时,会出现启动画面。

但是当我将应用程序与 Jar Bundler,启动画面没有出现。

在 Jar Bundler 的属性选项卡下,在 VM 选项中我写道:
splash:images/splash.png
我也试过:
-splash:images/splash.png(带连字符)。
我也标记了选项“将工作目录设置为内部应用程序包”

我将images/splash.png 复制到:

  • myApp.app/Contents
  • myApp.app/Contents/Resources
  • myApp.app/Contents/Resources/Java
  • myApp.app/Contents/MacOS
  • 但闪屏拒绝出现!

    这很奇怪,因为 myApp.app 成功运行 - 它只是不显示启动屏幕。

    我在控制台发现这两条消息:

    2 月 11 日 02:53:32 SnowL /Users/myusername/Desktop/myApp.app/Contents/MacOS/JavaApplicationStub[24262]:无法识别的 Java VM 选项被忽略:-splash:images/splash.png

    在 splash 属性之前没有连字符。
    2 月 11 日 02:55:50 SnowL /Users/myusername/Desktop/myApp.app/Contents/MacOS/JavaApplicationStub[26314]:无法识别的 Java VM 选项被忽略:splash:images/splash.png

    当我从终端运行应用程序时,会出现启动画面, 但是双击应用程序不显示启动画面?
    它应该像终端VM一样在同一个VM上运行,不是吗?
    我还将 JVM 版本(在 Info.plist 文件中)更改为:
    1.5*
    1.5+
    1.6*
    1.6+
    它们都没有使启动画面出现。

    感谢您的帮助!

    【问题讨论】:

    • 查看“Jar Bundler”的链接后,我看不到任何使用 Java Web Start (stackoverflow.com/tags/java-web-start/info) 无法实现的功能。你能分发应用程序吗?来自服务器?
    • 我对 java web start 不太熟悉(学习它的好时机:)我可以安装 form web start 但不能从 web start 运行。无论如何,JVM 应该是同一个 JVM,对吧?那么让你觉得随着 Web Start 的启动画面出现了吗? Web-Start 是否从不同的 JVM 运行?

    标签: java macos splash-screen


    【解决方案1】:

    像这样,在你的 Info.plist 中:

    ...
    <key>Java</key>
        <dict>
    
        <key>MainClass</key>
        <string>...</string>
    
        <key>SplashFile</key>
        <string>$APP_PACKAGE/tmp_splash.png</string>
    ...
    

    【讨论】:

    • 为什么 mac 捆绑应用会忽略 MANIFEST.MF ?
    【解决方案2】:

    在我的应用程序中:
    Info.plist:

        ...
        <dict>
            <key>ClassPath</key>
            <string>$JAVAROOT/@PROJECTNAMEASIDENTIFIER@.jar:@CLASSPATH@</string>
            <key>JVMVersion</key>
            <string>1.6+</string>
            <key>MainClass</key>
            <string>@PROJECTMAINCLASS@</string>
            <key>SplashFile</key>
            <string>$JAVAROOT/splash.png</string>
        ...  
    

    splash.png 复制到 myapp.app/Contents/Resources/Java/splash.png
    等等。

    【讨论】:

      【解决方案3】:

      您可以让您的应用程序在应用程序启动时显示一个关闭装饰的 jFrame 和您的图片

      【讨论】:

      • 启动画面的整个想法是用户在加载 App id 时看到一些东西。如果我使用 jFrame,JMV 需要加载它——它会增加加载时间,而这正是我不想发生的。我阅读了一些提供这种编程方式的教程——我认为这不是正确的方法。无论如何,感谢您的帮助。
      【解决方案4】:

      我遇到了同样的问题,在这个帖子上找到了解决方案:

      http://lists.apple.com/archives/java-dev/2008/Jun/msg00012.html

      它涉及在使用 Jar Bundler 后向捆绑应用程序的 Info.plist 文件添加一个条目。此外,需要将图像复制到 myApp.app/Contents/Resources/Java(至少使用“在应用程序包内设置工作目录”选项)。可能有更好的方法,但这似乎可行。

      【讨论】:

        猜你喜欢
        • 2015-04-18
        • 2012-08-12
        • 2013-04-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-10-01
        • 2013-03-28
        • 1970-01-01
        相关资源
        最近更新 更多