2011-02-11 110 views
3

我试图将我的Java应用程序移植到Mac OS。
当应用程序启动时,应该出现启动画面。Mac OS,Java Splash

当我运行从终端它去这样的应用程序:
java -classpath /the/right/classpath/ -splash:images/splash.png myApp/Main
当我这样做这样会出现闪屏。

但是,当我捆绑应用程序与 Jar Bundler,启动画面不会出现。

上的Jar捆扎机

,属性选项卡下,在VM选项I写道:
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日2时53分32秒SnowL /Users/myusername/Desktop/myApp.app/Contents/MacOS/JavaApplicationStub[24262]:无法识别的Java虚拟机选项忽略: -splash:images/splash.png

    在splash属性之前没有连字符。

    2月11日2时55分50秒SnowL /Users/myusername/Desktop/myApp.app/Contents/MacOS/JavaApplicationStub[26314]:无法识别的Java虚拟机选项忽略:飞溅:图像/ splash.png

    当我从终端运行应用程序时,如何通过启动屏幕出现, 但双击应用程序不显示启动画面?
    它应该像终端虚拟机一样运行在同一个虚拟机上,不是吗?
    我奥斯陆改变JVM版本(在Info.plist文件)到:
    1.5 *
    1.5+
    1.6 *
    1.6+
    他们没有让开机画面出现。

    感谢您的帮助!

    +0

    在查看'Jar Bundler'的链接后,我看不到使用Java Web Start(http://stackoverflow.com/tags/java-web-start/info)无法实现的任何操作。你可以分发应用程序吗?从服务器? – 2011-02-11 02:21:10

    +0

    我对java的web开始并不是很熟悉(学习它的好时机:) 我可以安装表单web开始但不能从web开始运行。 无论如何,JVM应该是相同的JVM,对吧? 那么让你觉得用Web Start启动画面出现? Web-Start是否从不同的JVM运行? – Arnon 2011-02-11 15:39:06

    回答

    6

    这样,在你的Info.plist:

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

    你可以让你的应用显示出与装饰关闭,您的图片一个JFrame在了应用程序启动

    +0

    启动画面的整个想法是用户在App ID加载时看到的东西。 如果我使用jFrame,JMV需要加载它 - 它增加了加载时间,这正是我不想发生的事情。 我阅读了一些提供这种编程方式的教程 - 我认为这不是正确的做法。无论如何,感谢您的帮助。 – Arnon 2011-02-11 15:41:30

    0

    我有同样的问题,结果发现在此线程的解决方案:

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

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

    3

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

    ... 
        <dict> 
         <key>ClassPath</key> 
         <string>$JAVAROOT/@[email protected]:@[email protected]</string> 
         <key>JVMVersion</key> 
         <string>1.6+</string> 
         <key>MainClass</key> 
         <string>@[email protected]</string> 
         <key>SplashFile</key> 
         <string>$JAVAROOT/splash.png</string> 
        ... 
    

    复制splash.pngmyapp.app/Contents /Resources/Java/splash.png
    et voila。