IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

SWT/JFace Java Discussion :

Portage vers Max os x


Sujet :

SWT/JFace Java

  1. #1
    Membre éclairé Avatar de Julien Bodin
    Homme Profil pro
    Devops
    Inscrit en
    Février 2009
    Messages
    474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Devops
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2009
    Messages : 474
    Points : 843
    Points
    843
    Par défaut Portage vers Max os x
    Bonjour à tous !

    Je développe une application qui a besoin de tourner sur Windows ET sur Mac os x.
    Je suis sous windows mais certains de mes utilisateurs sont sous mac.

    Savez-vous comment faire exactement ? J'ai toujours lu qu'il ne suffisait que d'une recompilation... je veux bien mais faut-il pour cela disposer d'une machine sous mac os x ? Ca ne m'arrange pas spécialement.

    La seule documentation que j'ai pu trouver sur le sujet c'est celle disponible sur le site d'eclipse : http://www.eclipse.org/swt/macosx/

    Je m'étais dirigé vers SWT pour sa simplicité et son intégration avec le système mais s'il n'est portable qu'en théorie va falloir que je passe à Swing

    Je vous remercie d'avance pour votre aide !

  2. #2
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    3 274
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 3 274
    Points : 4 141
    Points
    4 141
    Par défaut
    Tu n'as pas forcément besoin d'une recompilation.
    Il faut déjà savoir avec quelle version du sdk tu as compilé ton application, et savoir quelle clientèle Mac os x tu vises, autrement dit, quelle version de Java ils ont à disposition.
    Après il faudra fournir la lib swt pour Mac os x et cela devrait rouler.

    Tu pourras éventuellement via quelques propriétés, faire en sorte que ton application s'intègre un peu mieux dans l'OS.

  3. #3
    Membre éclairé Avatar de Julien Bodin
    Homme Profil pro
    Devops
    Inscrit en
    Février 2009
    Messages
    474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Devops
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2009
    Messages : 474
    Points : 843
    Points
    843
    Par défaut
    J'ajoute que je débute en Java. L'application n'est destinée pour le moment qu'à une seule personne sous mac.

    D'une manière générale, il suffit de créer un fichier .jar pour distribuer l'application ?
    Si je créé mon fichier .jar en remplaçant les libs windows par les libs max osx cela fonctionnerait ?

  4. #4
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    3 274
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 3 274
    Points : 4 141
    Points
    4 141
    Par défaut
    Oui cela peut fonctionner, mais encore une fois il te faut savoir quelle version de Java est dispo sur le mac de ton utilisateur.
    Java 6 n'est pas dispo sur tous les macs, il faut la dernière version de l'OS (leopard) et un mac 64 bits (core 2 duo).

  5. #5
    Membre éclairé Avatar de Julien Bodin
    Homme Profil pro
    Devops
    Inscrit en
    Février 2009
    Messages
    474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Devops
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2009
    Messages : 474
    Points : 843
    Points
    843
    Par défaut
    J'ai eu un retour de l'utilisateur. Sa version de Mac OS X est la 10.4, ce n'est donc pas leopard.
    Je suis un peu plus perplexe sur la version de java utilisée...
    La personne m'a dit 11.8.2 mais c'est peut-être la version d'un exécutable ou je ne sais quoi...

    De toutes façons, si la 5 tourne sur cet OS je lui demanderais de l'installer.
    Maintenant, moi j'utilise la 6 et ça passera pas sur son système.
    Comment dois-je faire pour compiler pour Java 5 ?
    Est-ce la seule chose que j'aurais à faire ?

    Merci pour vos réponses

  6. #6
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    3 274
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 3 274
    Points : 4 141
    Points
    4 141
    Par défaut
    Sur mac os x 10.4, c'est Java 1.5 par défaut.

    Il faut que dans ton code, tu supprimes les dépendances à Java 6, puis que tu compiles pour du 1.5 : attribut target (me semble t il ) de la commande Javac, ou paramètre de compilation de ton éditeur.

  7. #7
    Membre éclairé Avatar de Julien Bodin
    Homme Profil pro
    Devops
    Inscrit en
    Février 2009
    Messages
    474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Devops
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2009
    Messages : 474
    Points : 843
    Points
    843
    Par défaut
    Oulah... as-tu une idée de comment faire avec Eclipse ?
    Après quelques recherches, que des scripts Ant pouvaient configurer plus finalement la compilation mais est-ce la solution ?

  8. #8
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    3 274
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 3 274
    Points : 4 141
    Points
    4 141
    Par défaut
    Preferences -> Java -> Compiler
    A tester...

  9. #9
    Membre éclairé Avatar de Julien Bodin
    Homme Profil pro
    Devops
    Inscrit en
    Février 2009
    Messages
    474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Devops
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2009
    Messages : 474
    Points : 843
    Points
    843
    Par défaut
    J'ai essayé comme ça alors. J'ai choisis la compatibilité avec la jre 1.5 puis au moment de créer mon jar j'ai ajouté les fichiers correspondants à Mac OS X.
    Par contre le nom des fichiers est complètement différent, et l'extension est jnlib.
    Je m'attendais plus à des .so ou des .dylib, mais bon.

    Par contre, vu que j'ai développé avec la librarie swt.win32, comment va se faire le lien avec les fichiers .jnlib ?

  10. #10
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    3 274
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 3 274
    Points : 4 141
    Points
    4 141
    Par défaut
    J'imagine que selon la version du jar swt (selon l'OS), les classes sont différentes et font appel aux bonnes librairies.

  11. #11
    Membre éclairé Avatar de Julien Bodin
    Homme Profil pro
    Devops
    Inscrit en
    Février 2009
    Messages
    474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Devops
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2009
    Messages : 474
    Points : 843
    Points
    843
    Par défaut
    Bon alors il semblerait que l'application se lance elle est très très instable.
    Dans la console je vois beaucoup de trucs de ce genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    Exception in thread "Thread-1136" org.eclipse.swt.SWTException: Invalid thread access
            at org.eclipse.swt.SWT.error(Unknown Source)
            at org.eclipse.swt.SWT.error(Unknown Source)
            at org.eclipse.swt.SWT.error(Unknown Source)
            at org.eclipse.swt.widgets.Widget.error(Unknown Source)
            at org.eclipse.swt.widgets.Widget.checkWidget(Unknown Source)
            at org.eclipse.swt.widgets.Control.getShell(Unknown Source)
            at org.eclipse.swt.widgets.Composite.drawBackground(Unknown Source)
            at org.eclipse.swt.widgets.Widget.kEventControlDraw(Unknown Source)
            at org.eclipse.swt.widgets.Widget.controlProc(Unknown Source)
            at org.eclipse.swt.widgets.Display.controlProc(Unknown Source)
    Exception in thread "Thread-1138" org.eclipse.swt.SWTException: Invalid thread access
            at org.eclipse.swt.SWT.error(Unknown Source)
            at org.eclipse.swt.SWT.error(Unknown Source)
            at org.eclipse.swt.SWT.error(Unknown Source)
            at org.eclipse.swt.widgets.Widget.error(Unknown Source)
            at org.eclipse.swt.widgets.Widget.checkWidget(Unknown Source)
            at org.eclipse.swt.widgets.Control.internal_new_GC(Unknown Source)
            at org.eclipse.swt.graphics.GC.carbon_new(Unknown Source)
            at org.eclipse.swt.widgets.Control.drawWidget(Unknown Source)
            at org.eclipse.swt.widgets.Canvas.drawWidget(Unknown Source)
            at org.eclipse.swt.widgets.Widget.kEventControlDraw(Unknown Source)
            at org.eclipse.swt.widgets.Canvas.kEventControlDraw(Unknown Source)
            at org.eclipse.swt.widgets.Widget.controlProc(Unknown Source)
            at org.eclipse.swt.widgets.Display.controlProc(Unknown Source)
    De quoi ça peut venir ?

    Y'a aussi pas mal de Segmentation fault...

  12. #12
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    3 274
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 3 274
    Points : 4 141
    Points
    4 141
    Par défaut
    Tu devrais jeter un oeil ici:
    http://www.eclipse.org/swt/faq.php#uithread

  13. #13
    Membre éclairé Avatar de Julien Bodin
    Homme Profil pro
    Devops
    Inscrit en
    Février 2009
    Messages
    474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Devops
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2009
    Messages : 474
    Points : 843
    Points
    843
    Par défaut
    J'étais tombé là dessus tout à l'heure en tapant le message d'erreur sans google mais je ne trouve pas ça très clair.
    Je comprend que le thread principal ait besoin de se scinder dans certains cas pour continuer à faire réagir la fenêtre, ce qui pose des problèmes sur certains OS car si un de ces autres thread agit sur l'interface cela occasionne ces Exceptions.

    Mais je ne sais pas du tout où mettre le bout de code proposé en solution

    Dès que je change une propriété d'un composant ou un truc du genre je dois l'encadrer par ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    display.syncExec(
      new Runnable() {
        public void run(){
          label.setText(text);
        }
      });
    Ca risque d'être bien fastidieux
    Ce qui m'embête un peu c'est que le code ait à subir différents changement pour tourner sur un autre OS, pour du Java c'est quand même dommage.

  14. #14
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    3 274
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 3 274
    Points : 4 141
    Points
    4 141
    Par défaut
    Non, il faut utiliser ce bout de code si tu modifies des composants graphiques dans un autre thread que le thread principal.

    Ce qui est étrange c'est que tu devrais avoir l'erreur sur les autres OS.

  15. #15
    Membre éclairé Avatar de Julien Bodin
    Homme Profil pro
    Devops
    Inscrit en
    Février 2009
    Messages
    474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Devops
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2009
    Messages : 474
    Points : 843
    Points
    843
    Par défaut
    En effet. Surtout que je n'utilise pas de threads supplémentaires, ou en tous cas pas à ce moment là (ça le fait dès le début)

Discussions similaires

  1. Réponses: 1
    Dernier message: 07/03/2010, 10h27
  2. Portage vers Windows à l'aide de cygwin
    Par bdaone dans le forum Windows
    Réponses: 1
    Dernier message: 21/05/2007, 09h22
  3. Réponses: 4
    Dernier message: 02/12/2005, 13h27
  4. [Think Pascal] Portage/conversion Think Pascal vers MAC/Windows/Linux
    Par Alain Vitry dans le forum Autres IDE
    Réponses: 1
    Dernier message: 19/03/2005, 11h24
  5. Réponses: 6
    Dernier message: 12/02/2004, 21h55

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo