2011-02-11 5 views
3

J'essaye d'immigrer mon application Java sous Mac OS.
Lorsque l'application démarre, l'écran de démarrage doit apparaître.Mac OS, Java Splash

Quand je l'exécution de l'application du terminal aller comme ceci:
java -classpath /the/right/classpath/ -splash:images/splash.png myApp/Main
quand je fais comme ça l'écran de démarrage apparaît.

Mais lorsque je regrouper l'application avec le Jar Bundler, l'écran de démarrage n'apparaît pas.

sur le Bundler Jar, sous l'onglet Propriétés, dans l'option VM i a écrit:
splash:images/splash.png
J'ai aussi essayé:
-splash:images/splash.png (avec trait d'union).
J'ai marqué l'option " Définir le répertoire de travail à l'intérieur du package d'application" également.

i copier les images/splash.png à:

  • myApp.app/Contents
  • myApp.app/Contents/Resources
  • myApp.app/Contents/Resources/Java
  • myApp.app/Contents/MacOS
  • Mais l'écran de démarrage refuse d'apparaître!

    Il est étrange que myApp.app réussisse à s'exécuter - il ne montre tout simplement pas l'écran de démarrage.

    Je trouve sur la console ces deux messages:

    11 fév 02:53:32 Snowl /Users/myusername/Desktop/myApp.app/Contents/MacOS/JavaApplicationStub[24262]: Option non reconnue Java VM ignoré: -splash: images/splash.png

    Ceci sans trait d'union avant l'attribut splash.

    11 Feb 02:55:50 Snowl /Users/myusername/Desktop/myApp.app/Contents/MacOS/JavaApplicationStub[26314]: Unrecognized option Java VM ignoré: splash: images/splash.png

    Comment cela peut-il par ce que lorsque je cours l'application à partir du terminal de l'écran de démarrage apparaissent, mais double-cliquez sur l'application ne montre pas l'écran de démarrage ?
    il est censé fonctionner sur la même machine virtuelle comme le terminal VM, n'est-ce pas?
    Je olso changer la version JVM (sur le fichier Info.plist) à:
    1,5 *
    1.5+
    1,6 *
    1.6+
    aucun d'entre eux font l'écran de démarrage apparaisse.

    Merci pour votre aide!

    +0

    Après avoir regardé le lien pour 'Jar Bundler', je ne vois rien qu'il puisse faire qui ne puisse être atteint en utilisant Java Web Start (http://stackoverflow.com/tags/java-web-start/info). Pouvez-vous distribuer l'application. d'un serveur? –

    +0

    Je ne suis pas si familier avec le démarrage web java (bon moment pour l'apprendre :) Je peux installer le formulaire de démarrage Web, mais ne peut pas démarrer à partir du Web. Quoi qu'il en soit la JVM devrait être la même JVM, non? Vous pensez donc qu'avec Web Start, l'écran de démarrage apparaît? Le démarrage Web démarre-t-il à partir d'une machine virtuelle Java différente? – Arnon

    Répondre

    6

    Comme cela, dans votre Info.plist:

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

    pourquoi l'application groupée mac ignore MANIFEST.MF? – radistao

    1

    Vous pouvez faire votre demande montrent une JFrame avec des décorations hors et votre image au démarrage de l'application

    +0

    L'idée générale de l'écran de démarrage est que l'utilisateur voit quelque chose pendant que l'identifiant de l'application est chargé. Si j'utilise jFrame, le JMV doit le charger - cela augmente le temps de chargement, et c'est exactement ce que je ne voulais pas. J'ai lu quelques tutoriels qui offrent cette façon de programmer - je pense que ce n'est pas la bonne façon de le faire. Quoi qu'il en soit, merci pour l'aide. – Arnon

    0

    J'ai eu le même problème, et trouvé une solution sur ce fil:

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

    Il s'agit d'ajouter une entrée au fichier Info.plist de l'application fournie après l'utilisation de Jar Bundler. En outre, l'image doit être copiée dans myApp.app/Contents/Resources/Java (au moins avec l'option "Définir le répertoire de travail dans le package d'application"). Il y a probablement un meilleur moyen, mais cela semble fonctionner.

    3

    Dans ma demande:
    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> 
        ... 
    

    Copie splash.png à myapp.app/Contents /Resources/Java/splash.png
    et voila.