# [ANT] JavaApplicationStub



## JoJoS (13 Mars 2006)

Bonjour à tous!!

Voilà, je souhaiterais utiliser un script ant pour compiler, créer un jar puis créer un .app de mon application java.
Je fais tout ce qu'il faut, a savoir la copie des fichiers dans les bon repertoire, enfin bref..
Mon seul probleme, c'est a la copie du fichier JavaApplicationStub... Il n'est pas reconue comme un executable UNIX mais comme un document dans mon COntents/MacOS de mon .app..

J'utilise cette commande pour copier :

<copy todir="${main}.app/Contents/MacOs" file="${sourcesApp}/JavaApplicationStub"/>

Donc peut etre qu'il y a une extension a placer a la fin.. Mais j'arrive pas a trouver laquelle..


Merci pour votre aide!!!


----------



## GrandGibus (13 Mars 2006)

Non, pas de soucis d'extension à la fin... simplement une limitation de.... Java (et donc de Ant).

Tous les détails ICI, en particulier, tout en bas, la _Unix note_.

Du coup, pour résoudre ton soucis, il faut simplement mettre les bons droits depuis ton script. Par exemple: 


> <chmod file="${build}/MonAppli.app/Contents/MacOS/JavaApplicationStub" perm="ugo+rx" />


----------



## JoJoS (13 Mars 2006)

Merci, le fichier est maintenant correctement copié!!

Mais j'ai pas compris ce que ca fait au juste...


----------



## GrandGibus (13 Mars 2006)

Mac os est en fait un Unix... et donc, à ce titre, le système de droits de fichier (qui fait en partie la robustesse de l'os), sont ignorés lors de la copie. 

Le fichier doit avoir les droits d'exécution pour que ton bundle fonctionne... hors, à la copie, il perd ces droits, et donc, ça ne marche plus. L'instruction dans Ant, permet de rétablir _après coup_ les droits.... 

Si vous êtes plusieurs à déveloper sur plusieurs OS, li conviendra de tester sous windows et éventuellement, protéger le bout de code pour le rendre propre que à Unix. 

Tu risques également te heurter au problème de la redistribution par la suite selon le logiciel d'installation que tu utiliseras... 

Tous les détails sur les droits de fichiers sous unix ICI.


----------



## JoJoS (13 Mars 2006)

Oki je te remercie!!! Je vais me lire ton lien sur les droits unix!!

Encore 1 question sur ANT... Je compile a partir d'une version 1.5, et je voudrais que mon code compilé soit compatible avec les versions antérieur...
Je voudrais donc savoir qu'elle propriété a ajouter lors de la compilation...

Voilà ma commode:
<javac srcdir="${sources}" destdir="${classes}" debug="on"/>


----------



## tatouille (14 Mars 2006)

dans le meme esprit que le java applicationstub j'ai commencé à écrire un application stub pour python il reste simple 
pour l'instant il lit 3 valeurs d'un dictionnaire plist (info.plist)

j'ai commencé un petit projet pour tester wxpython sur osx (archimade)
c'est assez stable il me reste à gerer les SIGBUS car parfois python part en live (handicapés de la function free ...) (toutefois tres rarement gdb que du bonheur  )

    <key>Python</key>
    <dict>
        <key>WorkingDirectory</key>
        <string>Contents/Resources/Python</string>
        <key>MainClass</key>
        <string>__MacOSExecutable__</string>
        <key>PrintDebug</key>
        <string>1</string>
    </dict>

l'interpreteur démarre avec comme os.path ajouté "Contents/Resources/Python" (mais aussi "Contents/MacOS et Resources (pour plus tard)"

il essaye de loader le package "__MacOSExecutable__" (__MacOSExecutable__.py)

Contents/Resources/Python/__init__.py
Contents/Resources/Python/__MacOSExecutable__.py

-- à gerer si  les fichiers n'existent pas
-- et d'autres pétouilles d'erreur de dict

pour ceux que ca interresse
http://plumber.gnu-darwin.org/shared.php?_w2pb=pub/binaries/python


----------



## GrandGibus (14 Mars 2006)

JoJoS a dit:
			
		

> Encore 1 question sur ANT... Je compile a partir d'une version 1.5, et je voudrais que mon code compilé soit compatible avec les versions antérieur...
> Je voudrais donc savoir qu'elle propriété a ajouter lors de la compilation...
> 
> Voilà ma commode:
> <javac srcdir="${sources}" destdir="${classes}" debug="on"/>



Plusieurs possibilités s'offrent à toi. Le tout est de spécifier le numéro de version de compatibilité à la tache javac. 

Définir une propriété (attention, les props sont finales) <property name="build.compiler" value="javac1.4"/>
La même chose depuis le build.properties avec _build.compiler=javac1.4_
Définir la version directement dans javac par l'attribut _compiler_

Toutes les possibilités sont décrites dans l'aide sur la tâche _javac_ ICI.


----------



## JoJoS (14 Mars 2006)

Oki cool!! Encore merci!!

Et pour continuer dans ma lancer de questions, c'est bizare mais j'arrive pas a voir mon icone a la place de l'icone par défaut des .app.
Pourtant j'ai bien mis mon images dans le repertoire qui va bien, et je l'ai bien indiqué dans mon fichier .plist

Pourtant, quand je genere mon .app a partir de jar bundle, ca fonctionne..
J'ai redemarrer le finder et redemarrer, rien n'as changé..

1 idée??


----------



## GrandGibus (14 Mars 2006)

Quelques pistes extraites de cette page:


> Problems That May Arise
> There are times when you have set up these resource types properly but the icon is either the wrong one or it has defaulted to the standard application or data file icon. There are a number of possible reasons for this.
> 
> If you are using the Macintosh-based RMaker, the first thing to check is whether there are any extraneous spaces in your resource compiler input file. The Macintosh-based RMaker is very picky about extra spaces.
> ...


----------



## tatouille (15 Mars 2006)

JoJoS a dit:
			
		

> Oki cool!! Encore merci!!
> 
> Et pour continuer dans ma lancer de questions, c'est bizare mais j'arrive pas a voir mon icone a la place de l'icone par défaut des .app.
> Pourtant j'ai bien mis mon images dans le repertoire qui va bien, et je l'ai bien indiqué dans mon fichier .plist
> ...



rm -f `find /mybundle -name '.DS_*'`
osascript -e 'tell app "Finder" to quit'
osascript -e 'tell app "Finder" to activate'

mais ceci dans un script


----------



## JoJoS (15 Mars 2006)

Oki merci, je testerai ca demain!
Mais j'ai deja tester de re-demarrer le finder et meme le mac..

Sinon, encore 1 question.. lol, je m'arrete plus..

Voila, comme je programme en java, je voudrais savoir comment faire pour reussir, on lancer l'application a partir du jar et non du .app, a obtenir les menu en francais.. Parce que j'arrive bien a activer mes menus Preferences et a propos, mais le probleme c'est que ca s'ecrit en anglais...


----------



## JoJoS (16 Mars 2006)

Quelqu'un pourrait me faire voir un exemple de création de .app a partir de ant??
parce que la j'y arrive vraiment pas.. Je ne comprends rien.. Je fais tout pareil que si c'etait avec le jar bundler mais en ant, et rien ne marche...

Donc si quelqu'un pourrait poster un ant qui genere un .app ca serait super cool!

Je vous passe mon script pour voir si vous trouvez une erreur...



> <property name="main" value="LecteurRSS"/>
> <property name="sources" location="src"/>
> <property name="classes" location="bin"/>
> <property name="documentation" location="doc"/>
> ...



Voila, je n'ai mis que la partie jar et .app, le reste c'est de la compilation et ca fonctioonne bien.


----------

