2011-02-11 43 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。