portage programme java PC vers Mac

wondermac

Membre actif
18 Mars 2005
126
4
53
Bonjour,

La société pour laquelle je travaille développe un logiciel en Java. Ce logiciel est un logiciel d'edition de plan et de consultation de données géographiques. Il est utilisé sur PC et j'ai recemment demandé aux developpeurs de compiler une version pour Mac.
Le problème c'est que j'ai bien un fichier qui installe un programme sur mon Mac, que je peux lancer le programme installé... mais que j'ai un message d'erreur (voir copie ecran ci-jointe).
Y a t-il quelque chose de spécial à faire sous Tiger pour qu'un programme java fonctionne correctement ?
Merci de votre aide.
 
Bonjour,
et détail raconte quoi ?
Dans l'immédiat, je dirais juste qu'il ne faut pas que ton application utilise Java 5.0 qui n'est pas installé en standard avec Mac OSX. On doit encore être à la 1.4.2 (voir la 1.3.1 sur de vieux systèmes).
 
InvocationTargetException peut être générée lorsqu'on utilise la reflection. Est-ce que le logiciel charge dynamiquement des .class externes ? Vérifie dans le logiciel où est-ce que la reflection est utilisée, c'est très probablement un problème lié à ça, mais ça peut être juste un problème de chemin d'accès erroné, ou alors une librairie manquante.

Sinon, je comprends pas pourquoi tu parles de recompilation pour Mac :confused: Java est multiplateforme ce qui est justement un de ses atouts ! :)
 
molgow a dit:
Sinon, je comprends pas pourquoi tu parles de recompilation pour Mac :confused: Java est multiplateforme ce qui est justement un de ses atouts ! :)
Java est multiplateforme (pas la peine de reecrire l ensemble du code), certes, mais pour qu une appli java puisse fonctionner, il faut la recompiler une seule fois par systeme sur lequel on veut la faire tourner... donc rien de choquant :D
 
Ben non :D
Le bytecode est pareil sur Windows, Mac OS, Linux ou Unix ;)
Et crois moi, je m'amuse pas à recompiler sur chaque plateforme mon logiciel lorsque je développe en Java et que j'utilise Linux, Windows et Mac OS X pour le développement.
Enfin, c'est pas le problème de wondermac, mais j'aime bien relever ce qui me semble absurde ;)
 
  • J’aime
Réactions: GrandGibus
Plutôt difficille comme ça, sans plus de détails :rose:.

La piste du chargement de DLLs et autres windowseries est également à vérifier (ce qui étayerait par là même le fait qu'il faille produire une installation mac os).

Les extensions systèmes se chargent dans la JVM de la même manière (en prenant soin d'utiliser la bonne syntaxe), par contre les librairies elle-mêmes n'ont pas les mêmes extensions selon l'os (.dll, .so...).


[je remets une couche]
Quoiqu'il en soit, il n'est nullement besoin de recompiler du Java selon la plateforme cible !
[/je remets une couche]


;)
 
En tout cas pour l'instant le logiciel plante au démarrage sur Mac !
Voici une copie écran du détail du message d'erreur...

Est ce que ça vous dit quelque chose ?
 
Regarde à la ligne 89 de la classe Arpenter... Le nom de l'exception est NoSuchMethod exception: tu cherches à appeler une méthode qui n'éxiste pas ou n'est pas atteignable !

Cela peut effectivement arriver selon comment est codé le lien JNI entre Java et la partie native (DLLs, .so). Aucune exception n'est renvoyée (bien que catchée), et tu cherches par la suite en vain à appeler une méthode coté Java qui n'a pas été bindée.
 
Merci pour ta réponse.
C'est un peu difficile à comprendre pour moi.
Est ce qu'il faut modifier des lignes de code ou est ce qu'une recompilation suffit ?
Je précise que ce meme programme fonctionne parfaitement sur PC.
 
A mon avis, la recompilation ne changera rien à ton problème !

Il y a des chances pour que malheureusement, le code n'ait pas été écrit multi platforme:

Il est assez délicat d'écrire tout un programme multi-platforme qui touche à des concepts assez sensibles comme les librairies ou le système de fichiers... surtout quand toute l'équipe de développement est sous windows !

Dans mon équipe, on est 3 sous windows, 1 sous linux et 2 sous mac os. Ainsi, le moindre soucis est détecté de suite.

Je suis sûr qu'il ne s'agit que d'une petite coquille... d'autant plus dure à trouver que tout marche sur le poste du développeur.

Tu trouveras les accès au code natif en cherchant dans les classes Java du code qui ressemblera à : System.loadLibrary(..). Premier indice, regade si le nom passé (ou la chaine qui le contient) se termine par ".dll"... c'est souvent signe de code Java écrit pour Windows !

Dans le même genre, les indications de path qui contiennent des "\" en dur au lieu de File.separator !


Bon courage
 
  • J’aime
Réactions: molgow