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

JavaFX Discussion :

javafx et java pour une application de bureau


Sujet :

JavaFX

  1. #1
    Membre régulier Avatar de guitariste
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    245
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 245
    Points : 108
    Points
    108
    Par défaut javafx et java pour une application de bureau
    salut.

    je dois programmer une application qui dispose d'une interface ou on peut dessiner des graphes(nœuds et arcs) et les modifier.
    je viens decouvrir javafx et ca me parait très pratique.
    1) Donc je me demande si ce langage permet de modifier la forme des objets dessinés le tout avec des animations ( a la flash)
    2) J'ai vu un peu qu'il ya des probleme de faire fonctionner swing avec javafx : donc je me demande si ce dernier est assez puissant pour faire toute la partie graphique de mon application ( boutons, champs de texte etc...)
    3)Et surtout est ce que c'est possible d'utiliser java avec javafx (echanger des variables etc...)

    merci

  2. #2
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 840
    Points : 22 854
    Points
    22 854
    Billets dans le blog
    51
    Par défaut
    0) Voir la

    1) De base tu peux appliquer tout un tas de transformations a des objets "au vol". De base faire des animation est tres simple en JavaFX (voir ).
    Si tu veux transformer un objet en un autre (morphing) apparement il faut aller voir du cote de la classe javafx.scene.shape.DelegateShape.
    Si tu veux definir tes animations graphiquement, tu devras aller regarder du cote du logiciel JXBuilder.

    Note: attention la gestion des strokes en JavaFX est simplifiee au maximum et ne supporte que ce que peut faire BasicStroke en Java (alors que l'interface Stroke permet de decorer les bordures de n'importe quelle maniere).

    2) oui : tous les composants/controles actuels de l'API JavaFX sauf 3 (! TextBox, ImageView et MediaPlayer) sont en Swing (voir SwingButton, SwingList, etc.) et il est possible d'inclure la quasi-majorite des composant Swing persos/customises pour peu qu'ils soient bien programmes en respectant les bonnes regles de programmation en Swing et AWT (voir ).

    3) de maniere generale, sans probleme. Il peut y avoir des complications en cas d'utilisation de tableaux, de varrargs, de Generics, de methodes avec des signatures proches en Java mais elles sont contournables d'une maniere ou d'une autre (voir ).
    Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.

    suivez mon blog sur Développez.

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    24
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Mars 2009
    Messages : 24
    Points : 25
    Points
    25
    Par défaut
    Bonjour,

    Tu veux travailler en client léger? Indépendant d'internet?

  4. #4
    Membre régulier Avatar de guitariste
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    245
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 245
    Points : 108
    Points
    108
    Par défaut
    salut.

    Merci bouye pour les réponses


    non thomas.cadot , toute l'application est sur la machine client. Mais ca va etre en architecture 3 couches. et comme j'ai vu que javafx est assez puissant surtout pour les animations ( c'est un point important de l'application ) je veux profiter de ca pour la couche presentation.
    Mais les autres parties vont être en java ( c'est pas moi qui va les programmer)
    j'espere que c'est aussi fort que l'ActionScript pour tout ce qui est animation.
    je dois creer une interface qui permet a l'utilisateur de dessiner des graphes et de les modifier apres ( genre s'il appuie sur un bouton un arc bouge d'un noeud a au autre avec une belle animation )

    je connais pas les limites de ce javafx script, et j'aimerais bien savoir s'il vaut la peine de se lancer avec lui ( est ce qu'il a un avenir prometteur !!)

    Merci

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    24
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Mars 2009
    Messages : 24
    Points : 25
    Points
    25
    Par défaut
    Ton appli se compare donc plus à un logiciel (client lourd), complètement exécutée sur le poste client. Or ta partie JavaFX a besoin du runtime JavaFX en cache si ton client n'est pas connecté à internet. JavaFX à sont lancement multiplie les appels aux serveurs de SUN. Essaye peut être en intégrant la sdk JavaFX à ton application...

  6. #6
    Membre régulier Avatar de guitariste
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    245
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 245
    Points : 108
    Points
    108
    Par défaut
    salut.

    JavaFX à sont lancement multiplie les appels aux serveurs de SUN
    a bon ? et pourquoi ? si le client a le sdk javafx sur sa machine !

    et puis je croyais que seule la jvm est necessaire pour executer ( javafx est inclu dans java non ? )

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    24
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Mars 2009
    Messages : 24
    Points : 25
    Points
    25
    Par défaut
    Non, Java est nécessaire pour lancer du FX, mais pas suffisant, un runtime JavaFX est téléchargé au premier lancement dans le cache Java de l'utilisateur.

    Si l'utilisateur a le sdk FX sur sa machine, tu devras utiliser la ligne de commande:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    # javafx -classpath tonJar.jar TaClasse
    Mais dans ce cas, tu ne profites pas des mises à jour de javaFX.. , qui vu sont stade de développement, vont être nombreuses.
    Le cache est lui vérifié à chaque lancement si tu as internet, afin d'être maintenu à jour.

  8. #8
    Membre régulier Avatar de guitariste
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    245
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 245
    Points : 108
    Points
    108
    Par défaut
    ok.

    ça veut dire que l'application va être dépendante d'internet !

    c'est la 1er mauvaise surprise et j'espère que c'est la dernière aussi

    merci pour l'info en tout cas

  9. #9
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    24
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Mars 2009
    Messages : 24
    Points : 25
    Points
    25
    Par défaut
    Citation Envoyé par guitariste Voir le message
    ok.

    ça veut dire que l'application va être dépendante d'internet !
    C'est aussi mon souci.. si jamais, tu trouves une solution..

    Regarde déjà ce post:
    http://www.developpez.net/forums/d69...gateur-applet/

  10. #10
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 840
    Points : 22 854
    Points
    22 854
    Billets dans le blog
    51
    Par défaut
    Mais si c'est une application standalone, il n'a aucuns besoin du délégateur d'applet ni de l'accès au web.

    Par contre il faut bien packager les runtimes avec son application ou bien indiquer le CLASSPATH au lancement puisqu'installer le SDK JavaFX n'installe pas ces mêmes runtimes dans le CLASSPATH du JRE.

    Voir ma dernière réponse à ce topic.

    EDIT - Toujours dans le cas d'une standalone sur un réseau d'entreprise, mieux vaut récupéer les maj manuellement pour les déployer plus tard sur les postes clients, après tout les futures version 1.5 et 2.0 peuvent éventuellement introduire de nouvelles incompatibilités au niveau des binaires comme entre la 1.0 et la 1.1 (apparement la 1.1.1 est compatible avec la 1.1 ?). De toute manière au niveau d'une entreprise on préfère avoir un socle commun d'exécution plutot que de forcément mettre à jour vers des versions qui n'ont pas été testées ni validées.
    Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.

    suivez mon blog sur Développez.

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook

  11. #11
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    32
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 32
    Points : 29
    Points
    29
    Par défaut
    Bonjour à tous,

    petit up sur ce thread car moi aussi je cherche à déployer une application JavaFX type client léger (pour l'instant) sur une machine qui n'a jamais eu et n'aura jamais Internet.

    La seule solution que j'ai pu trouver ici et ailleurs se base sur l'utilisation du cache système pour stocker les runtimes distants JavaFX de Sun au moins une fois, puis travailler offline. Sauf que dans mon cas c'est inexploitable.

    Voir ici: http://blogs.sun.com/mobility_techti...evelop_and_run

    Je n'arrive même pas à utiliser les versions de mon appli de test qui sont générées dans le répertoire "dist" de ma solution NetBeans (6.5.1 et sdk 1.1.1 sous windows). Impossible de lancer le .jar à l'aide du fichier .html
    On en parle ici:
    http://www.developpez.net/forums/d69...gateur-applet/

    J'ai donc tenté d'utiliser la bonne vieille console, avec une instruction dans le répertoire dist du type:
    javafx -classpath -jar JavaFXTestApply.jar MainGUI.Main
    ma variable CLASS_PATH contient le chemin vers les lib desktop et shared du sdk 1.1.1 de NetBeans, ainsi que com/sun/javafx/runtime.
    Je me suis inspiré de ce thread: http://www.developpez.net/forums/d65...r/#post4149540

    J'aurai peut-être pu m'en sortir avec un .bat qui set le classpath de l'utilisateur correctement, en supposant qu'il ait bien le sdk javafx d'installé et configuré correctement... Quelle misère... mais non!

    Là encore, ça ne marche pas, je tombe sur une erreur bizarre:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Exception in thread "main" java.lang.NoClassDefFoundError: JavaFXTestAppy/jar
    Caused by: java.lang.ClassNotFoundException: JavaFXTestApply.jar
            at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
            at java.security.AccessController.doPrivileged(Native Method)
            at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
            at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
            at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
            at java.lang.ClassLoader.loadClass(ClassLoader.java:252)
            at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)
    Could not find the main class: JavaFXTestApply.jar.  Program will exit.
    L'appli est compilée en "Standart Execution" avec la class MainGUI.Main comme point d'entrée.Ai-je fais une erreur au niveau de ce point d'entrée dans mon script JavaFX? Le voici:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Main.jx:
    [...]
    function run() {
          stageContent = [
                // ... tout plein de customNode ...
          ]
    }
    L'attribut content de ma Scene est bindé sur stageContent (tableau de Node), et puis voila.

    Si quelqu'un est inspiré, qu'il se fasse plaisir, je ne pense pas être le seul à vouloir utiliser du JavaFX sur une machine sans Internet ^^. D'ailleurs, la cible n'est même pas forcément d'afficher l'appli dans un browser, j'aimerai juste développer une architecture basée sur les RIAs pour une application n-tier type desktop. Même si le langage est jeune, le rendre dépendant d'une connexion Internet c'est quand même gênant...

    Bonne journée à tous!

    Fr3nchK1ss

  12. #12
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    24
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Mars 2009
    Messages : 24
    Points : 25
    Points
    25
    Par défaut
    Bonjour,

    Dans ton Netbeans, clique droit sur ton projet,
    Properties,
    Librairies ,
    Add jar / folder,

    et ajoute tous les .jar de :

    C:\Program Files\JavaFX\javafx-sdk1.1\lib\shared\
    C:\Program Files\JavaFX\javafx-sdk1.1\lib\desktop\

    ton jar sera alors executable avec une simple jre Java 1.6 .

    Voilou.

  13. #13
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    32
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 32
    Points : 29
    Points
    29
    Par défaut
    Citation Envoyé par thomas.cadot Voir le message
    Bonjour,

    Dans ton Netbeans, clique droit sur ton projet,
    Properties,
    Librairies ,
    Add jar / folder,

    et ajoute tous les .jar de :

    C:\Program Files\JavaFX\javafx-sdk1.1\lib\shared\
    C:\Program Files\JavaFX\javafx-sdk1.1\lib\desktop\

    ton jar sera alors executable avec une simple jre Java 1.6 .

    Voilou.
    Merci, ça m'évite de rajouter ces deux répertoires au CLASS_PATH dans un éventuel fichier .bat de lancement. Par contre, j'ai toujours besoin de rajouter com/sun/javafx/runtime sinon ça se lance pas (hors IDE je parle).

    De plus, j'ai toujours la même erreur au lancement du jar de type java.lang.NoClassDefFoundError, Could not find the main class: JavaFXTestApply.jar
    Pourtant mon Main.class est bien dans le package MainGUI de mon jar

    [EDIT]
    Voici un autre thread sur le forum de Sun qui traite du même problème, si ça peut aider à la résolution:
    http://forums.sun.com/thread.jspa?th...70870&tstart=1

  14. #14
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    24
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Mars 2009
    Messages : 24
    Points : 25
    Points
    25
    Par défaut
    Pas besoin du runtime pour moi,
    est ce que netbeans connait bien ta classe Main?
    tu récupères bien le jar pour le répertoire dist?
    tu peux m'envoyer le fichier manifest généré automatiquement dans le jar?

    merci

  15. #15
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    32
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 32
    Points : 29
    Points
    29
    Par défaut
    Citation Envoyé par thomas.cadot Voir le message
    Pas besoin du runtime pour moi,
    est ce que netbeans connait bien ta classe Main?
    tu récupères bien le jar pour le répertoire dist?
    tu peux m'envoyer le fichier manifest généré automatiquement dans le jar?

    merci
    Oui Netbeans connait ma classe Main, je l'ai spécifiée dans les properties.
    J'exécute bien le jar dans le répertoire dist.

    Mais j'ai réussi, l'erreur vient de Netbeans. Quand on ajoute ces lignes:
    C:\Program Files\JavaFX\javafx-sdk1.1\lib\shared\
    C:\Program Files\JavaFX\javafx-sdk1.1\lib\desktop\

    Netbeans crée deux fichiers .jar avec tous les .jar dedans. N'importe quoi.
    Le manifest ressemble à ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Manifest-Version: 1.0
    Class-Path: lib/lib_desktop.jar lib/lib_shared.jar
    Main-Class: MainGUI.Main
    J'ai du décompresser le contenu de ces deux .jar dans le répertoire lib de dist.
    Ensuite, j'ajoute manuellement tous les .jar après celui de mon appli avec la commande -cp de javafx.

    Je me suis fait un .bat, me donne ça:

    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
    javafx -cp ^
    JavaFXTestApply.jar;^
    asm-all-3.1.jar;^
    Decora-D3D.jar;^
    Decora-HW.jar;^
    Decora-OGL.jar;^
    Decora-SSE.jar;^
    eula.jar;^
    fxdloader.jar;^
    gluegen-rt.jar;^
    javafx-swing.jar;^
    javafxc.jar;^
    javafxdoc.jar;^
    javafxgui.jar;^
    javafxrt.jar;^
    JavaFXWebServiceClient.jar;^
    jmc.jar;^
    jogl.jar;^
    rt15.jar;^
    Scenario.jar;^
    script-api.jar;^
    toolchain.jar;^
    websvc.jar ^
    MainGUI.Main
    Et là ça se lance. A terme, faudrait rajouter ces dépendances dans le manifest. Pas très élégant mais ça fera l'affaire pour tester. Merci thomas pour ton aide.

  16. #16
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    24
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Mars 2009
    Messages : 24
    Points : 25
    Points
    25
    Par défaut
    Il faut rajouter les jar de javafx pas les repertoires, comme ca netbeans ne les compresse pas.

  17. #17
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 840
    Points : 22 854
    Points
    22 854
    Billets dans le blog
    51
    Par défaut
    Il reste quand meme le probleme que JavaFX utilise pas mal de lib natives dont Decora, Gluegen, Jmc et Jogl.

    Donc avec le SDK on peut faire une application Windows tout au mieux... (ou alors sans acceleration materiel ?).
    Apres il faut aller recuperer les autres manuellement depuis http://dl.javafx.com/ soit en visualisant les contenus des differents fichiers JNLP impliques dans le telechargement des runtimes, soit en regardant les URL listes dans la categorie Resource dans l'interface Java Web Start (javaws -viewer) (et il faudra passer et sur Windows, et sur MacOS et sur Linux pour savoir le nom et le nombre exact de toutes les libs a telecharger).

    Par exemple, sous Windows:
    http://dl.javafx.com/javafx-rt__V1.1.1.jar
    http://dl.javafx.com/Decora-D3D-nati...86__V1.1.1.jar
    http://dl.javafx.com/Decora-D3D__V1.1.1.jar
    http://dl.javafx.com/Decora-HW__V1.1.1.jar
    http://dl.javafx.com/Decora-OGL__V1.1.1.jar
    http://dl.javafx.com/Decora-SSE-nati...86__V1.1.1.jar
    http://dl.javafx.com/Decora-SSE__V1.1.1.jar
    http://dl.javafx.com/gluegen-rt-nati...__V1.0b06a.jar
    http://dl.javafx.com/gluegen-rt__V1.0b06a.jar
    http://dl.javafx.com/jmc-natives-win...86__V1.1.1.jar
    http://dl.javafx.com/jmc__V1.1.1.jar
    http://dl.javafx.com/jogl-natives-wi...6__V1.1.1a.jar
    http://dl.javafx.com/jogl__V1.1.1a.jar

    Sous Linux:
    http://dl.javafx.com/javafx-rt__V1.1.1.jar
    http://dl.javafx.com/Decora-HW__V1.1.1.jar
    http://dl.javafx.com/Decora-OGL__V1.1.1.jar
    http://dl.javafx.com/gluegen-rt-nati...__V1.0b06a.jar
    http://dl.javafx.com/gluegen-rt__V1.0b06a.jar
    http://dl.javafx.com/jmc-natives-linux-i586__V1.1.1.jar
    http://dl.javafx.com/jmc__V1.1.1.jar
    http://dl.javafx.com/jogl-natives-li...6__V1.1.1a.jar
    http://dl.javafx.com/jogl__V1.1.1a.jar

    Sans compter qu'apparement la license interdit de redistribuer les runtimes..................

    Chai pas gagne...

    EDIT - comme mentionne sur la page precedente (http://blogs.sun.com/mobility_techti...evelop_and_run), si on va jeter un coup d'oeil dans http://dl.javafx.com/javafx-cache.jnlp , on a la liste complete des libs:

    Code XML : 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
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
     
    <?xml version="1.0" encoding="UTF-8"?>
    <jnlp spec="1.0+" version="1.1.1" codebase="http://dl.javafx.com/" href="javafx-cache.jnlp">
        <information>
            <title>JavaFX Runtime JNLP Cache Preload</title>
            <vendor>Sun Microsystems, Inc.</vendor>
            <homepage href="http://www.sun.com/javafx"/>
            <offline-allowed/>
        </information>
        <security>
            <all-permissions/>
        </security>
        <update check="always"/>
        <resources>
            <jar href="javafx-rt__V1.1.1.jar" download="eager"/>
            <jar href="jmc__V1.1.1.jar" download="eager"/>
            <extension name="JavaFX Runtime" href="1.1/javafx-rt.jnlp"/>
            <jar href="jogl__V1.1.1a.jar" download="eager"/>
            <jar href="gluegen-rt__V1.0b06a.jar" download="eager"/>
        </resources>
        <resources os="Windows">
            <jar href="Decora-SSE__V1.1.1.jar" download="eager"/>
            <jar href="Decora-HW__V1.1.1.jar" download="eager"/>
            <jar href="Decora-OGL__V1.1.1.jar" download="eager"/>
        </resources>
        <resources os="Windows" arch="x86">
            <jar href="Decora-D3D__V1.1.1.jar" download="eager"/>
            <nativelib href="Decora-SSE-natives-windows-i586__V1.1.1.jar" download="eager"/>
            <nativelib href="Decora-D3D-natives-windows-i586__V1.1.1.jar" download="eager"/>
            <nativelib href="jogl-natives-windows-i586__V1.1.1a.jar" download="eager"/>
            <nativelib href="gluegen-rt-natives-windows-i586__V1.0b06a.jar" download="eager"/>
            <nativelib href="jmc-natives-windows-i586__V1.1.1.jar" download="eager"/>
        </resources>
        <resources os="Windows" arch="amd64">
            <nativelib href="jogl-natives-windows-amd64__V1.1.1a.jar" download="eager"/>
            <nativelib href="gluegen-rt-natives-windows-amd64__V1.0b06a.jar" download="eager"/>
        </resources>
        <resources os="Windows" arch="x86_64">
            <nativelib href="jogl-natives-windows-amd64__V1.1.1a.jar" download="eager"/>
            <nativelib href="gluegen-rt-natives-windows-amd64__V1.0b06a.jar" download="eager"/>
        </resources>
        <resources os="SunOS">
            <jar href="Decora-HW__V1.1.1.jar" download="eager"/>
            <jar href="Decora-OGL__V1.1.1.jar" download="eager"/>
        </resources>
        <resources os="SunOS" arch="sparc">
            <nativelib href="jogl-natives-solaris-sparc__V1.1.1a.jar" download="eager"/>
            <nativelib href="gluegen-rt-natives-solaris-sparc__V1.0b06a.jar" download="eager"/>
            <nativelib href="jmc-natives-solaris-sparc__V1.1.1.jar" download="eager"/>
        </resources>
        <resources os="SunOS" arch="sparcv9">
            <nativelib href="jogl-natives-solaris-sparcv9__V1.1.1a.jar" download="eager"/>
            <nativelib href="gluegen-rt-natives-solaris-sparcv9__V1.0b06a.jar" download="eager"/>
        </resources>
        <resources os="SunOS" arch="x86">
            <nativelib href="jogl-natives-solaris-i586__V1.1.1a.jar" download="eager"/>
            <nativelib href="gluegen-rt-natives-solaris-i586__V1.0b06a.jar" download="eager"/>
            <nativelib href="jmc-natives-linux-i586__V1.1.1.jar" download="eager"/>
        </resources>
        <resources os="SunOS" arch="amd64">
            <nativelib href="jogl-natives-solaris-amd64__V1.1.1a.jar" download="eager"/>
            <nativelib href="gluegen-rt-natives-solaris-amd64__V1.0b06a.jar" download="eager"/>
        </resources>
        <resources os="SunOS" arch="x86_64">
            <nativelib href="jogl-natives-solaris-amd64__V1.1.1a.jar" download="eager"/>
            <nativelib href="gluegen-rt-natives-solaris-amd64__V1.0b06a.jar" download="eager"/>
        </resources>
        <resources os="Linux">
            <jar href="Decora-HW__V1.1.1.jar" download="eager"/>
            <jar href="Decora-OGL__V1.1.1.jar" download="eager"/>
        </resources>
        <resources os="Linux" arch="i386">
            <nativelib href="jogl-natives-linux-i586__V1.1.1a.jar" download="eager"/>
            <nativelib href="gluegen-rt-natives-linux-i586__V1.0b06a.jar" download="eager"/>
        </resources>
        <resources os="Linux" arch="x86">
            <nativelib href="jogl-natives-linux-i586__V1.1.1a.jar" download="eager"/>
            <nativelib href="gluegen-rt-natives-linux-i586__V1.0b06a.jar" download="eager"/>
        </resources>
        <resources os="Linux" arch="amd64">
            <nativelib href="jogl-natives-linux-amd64__V1.1.1a.jar" download="eager"/>
            <nativelib href="gluegen-rt-natives-linux-amd64__V1.0b06a.jar" download="eager"/>
        </resources>
        <resources os="Linux" arch="x86_64">
            <nativelib href="jogl-natives-linux-amd64__V1.1.1a.jar" download="eager"/>
            <nativelib href="gluegen-rt-natives-linux-amd64__V1.0b06a.jar" download="eager"/>
        </resources>
        <resources os="Mac OS X">
            <jar href="Decora-SSE__V1.1.1.jar" download="eager"/>
            <nativelib href="Decora-SSE-natives-macosx__V1.1.1.jar" download="eager"/>
            <nativelib href="jmc-natives-macosx__V1.1.1.jar" download="eager"/>
            <jar href="Decora-JOGL__V1.1.1.jar" part="Decora" download="eager" />
        </resources>
        <resources os="Mac OS X" arch="ppc">
            <nativelib href="jogl-natives-macosx-ppc__V1.1.1a.jar" part="jogl" download="eager"/>
            <nativelib href="gluegen-rt-natives-macosx-ppc__V1.0b06a.jar" part="gluegen-rt" download="eager"/>
        </resources>
        <resources os="Mac OS X" arch="i386">
            <nativelib href="jogl-natives-macosx-universal__V1.1.1a.jar" part="jogl" download="eager"/>
            <nativelib href="gluegen-rt-natives-macosx-universal__V1.0b06a.jar" part="gluegen-rt" download="eager"/>
        </resources>
        <resources os="Mac OS X" arch="x86_64">
            <nativelib href="jogl-natives-macosx-universal__V1.1.1a.jar" part="jogl" download="eager"/>
            <nativelib href="gluegen-rt-natives-macosx-universal__V1.0b06a.jar" part="gluegen-rt" download="eager"/>
        </resources>
        <component-desc/>
    </jnlp>

    EDIT2 - apparement ce fichier-la http://dl.javafx.com/jmc-natives-sol...rc__V1.1.1.jar est manquant.
    Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.

    suivez mon blog sur Développez.

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook

  18. #18
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 840
    Points : 22 854
    Points
    22 854
    Billets dans le blog
    51
    Par défaut
    Pour ceux que ca interresse:

    Code JavaFX : 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
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
     
    package test;
     
    import java.io.BufferedInputStream;
    import java.io.File;
    import java.io.FileNotFoundException;
    import java.io.FileOutputStream;
    import java.lang.Exception;
    import java.lang.System;
    import java.net.URL;
    import java.util.zip.GZIPInputStream;
    import javafx.lang.FX;
    import javax.xml.parsers.SAXParserFactory;
    import org.xml.sax.helpers.DefaultHandler;
    import test.IOUtilities;
     
    /**
     * @author fabriceb
     */
     // Define proxy settings.
    System.setProperty("proxySet", "true");
    // Proxy host.
    System.setProperty("proxyHost", "host");
    // Proxy port.
    System.setProperty("proxyPort", "port");
    try {
        // Gets JNLP cache file.
        def url = new URL("http://dl.javafx.com/javafx-cache.jnlp");
        def connection = url.openConnection();
        println("Type: {connection.getContentType()}");
        println("Lenght: {connection.getContentLength()}");
        println("Encoding: {connection.getContentEncoding()}");
        // Stream is compressed with GZip.
        def gzip = new GZIPInputStream(url.openStream());
        try {
            // Initialize SAX.
            def saxFactory = SAXParserFactory.newInstance();
            var codebase;
            // Define handler to be used during XML parsing.
            def handler = DefaultHandler {
                public override function startElement(uri, localName, qName, attributes) {
                    // Extract base site URL (should be http://dl.javafx.com/).
                    if ("jnlp".equals(qName)) {
                      codebase = attributes.getValue("codebase");
                    }
                    // Extract library files.
                    else if ("jar".equals(qName) or "nativelib".equals(qName)) {
                        def href = attributes.getValue("href");
                        if (href != null) {
                            def libURL = "{codebase}{href}";
                            downloadLib(libURL, href);
                        }
                    }
                }
            }
            // Start SAX parser on the GZipped stream with custom handler.
            saxFactory.newSAXParser().parse(gzip, handler);
        }
        finally {
            gzip.close();
        }
    } catch (e:Exception) {
        e.printStackTrace();
    }
     
    /**
     * Download the file at the provided URL.
     * @param libname Remote file.
     * @param filename Local file.
     * @exception IOException In case of I/O error.
     */
    function downloadLib(libname:String, filename:String) {
        def libURL = new URL(libname);
        def file = new File("{FX.getProperty("javafx.user.dir")}/{filename}");
        println("Downloading {libURL} into {file.getAbsolutePath()}");
        try {
            // Open connection to lib.
            def libConnection = libURL.openConnection();
            def libLenght = libConnection.getContentLength();
            if (file.exists()) {
                def fileLength = file.length();
                // Check if already downloaded.
                if (libLenght == fileLength) {
                    println("File already downloaded, skipping.");
                    return;
                }
                // Partial download, overwrite.
                else {
                    println("File already downloaded, overriding.");
                }
            }
            def remoteIn = new BufferedInputStream(libConnection.getInputStream());
            try {
                def out = new FileOutputStream(file);
                try {
                    IOUtilities.copyStream(remoteIn, out, 4 * 4096);
                    out.flush();
                }
                finally {
                    out.close();
                }
            }
            finally {
                remoteIn.close();
            }
        } catch (fne:FileNotFoundException) {
            println("Lib {libURL} missing on web server!");
        }
    }

    Code Java : 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
    26
    27
    28
    29
    30
    31
     
    package test;
     
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.OutputStream;
     
    /**
     *
     * @author fabriceb
     */
    public class IOUtilities {
        /**
         *  Recopy a stream into another.
         * @param in The source stream.
         * @param out The target stream.
         * @param bufferSize The buffer size.
         * @throws java.io.IOException In case of I/O error.
         */
        public static void copyStream(InputStream in, OutputStream out, int bufferSize) throws IOException {
            byte[] buffer = new byte[bufferSize];
            while (true) {
                int red = in.read(buffer);
                if (red < 0) {
                    break;
                }
                out.write(buffer, 0, red);
            }
            out.flush();
        }
    }
    Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.

    suivez mon blog sur Développez.

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook

  19. #19
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    32
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 32
    Points : 29
    Points
    29
    Par défaut
    Citation Envoyé par bouye Voir le message
    Sans compter qu'apparement la license interdit de redistribuer les runtimes..................
    Je confirme, fichier LICENSE.txt du SDK:

    "5. Restrictions.

    (a) The copies of Software provided to you under this Agreement are licensed, not sold, to you by Sun.
    Sun reserves all rights not expressly granted. (b) You may make a single archival copy of Software, but otherwise may not copy, modify, or distribute Software. "

    En gros si ça reste sur notre poste pour des tests, ça peut passer. Sinon, c'est illégal.

    Sinon, j'ai moi aussi continué à chercher comment exécuter le tout avec un .jnlp. J'ai rajouté les dépendances vers tous les .jar de http://dl.javafx.com/ (ceux que t'as listé bouye), et j'ai supprimé du fichier de déploiement .jnlp la ligne suivante:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <extension name="JavaFX Runtime" href="http://dl.javafx.com/1.1/javafx-rt.jnlp"/>
    Le Java Web Start se lance, mais je tombe sur cette erreur:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Java.lang.IllegalAccessException: Class com.sun.javafx.runtime.Entry
    can not access a member of class MainGUI.Main with modifiers "public static"
    Là je vois pas trop...

  20. #20
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 840
    Points : 22 854
    Points
    22 854
    Billets dans le blog
    51
    Par défaut
    Là je ne vois pas trop surtout que ca semble être un problème de compilateur ou d'interpréteur.

    Moi je n'ai pas supprimé cette ligne, je l'ai juste remplacé par un JNLP local (le même que celui que j'ai indiqué mais en modifiant toutes les URL pour pointer sur un site local qui contient tous les JARs que j'ai téléchargé avec le code que j'ai donné -donc tous sauf celui qui est absent de leur site-).

    Si on ne vide pas le cache Java Web Start, apparement il utilise les fichiers qu'il a déjà en stock, ceux téléchargés précédements depuis javafx.com.

    Si on vide le cache Java Web Start, il les re-télécharge mais à partir de l'URL locale cette fois-ci. Bon y a quand même un PC qui déraille et veut absolument aller sur javafx.com et plante sans télécharger quoi que ce soit ... mais je pense que c'est un bug dans le cache de son Java Web Start (il a la 1.6.0_11 et je lui ai demandé d'ugrader à la 1.6.0_13).
    Evidement ceci ne me sert qu'à faire des tests de déploiement en interne pour le moment, puisque je ne peux pas distribuer une application légalement de cette manière. M'enfin j'espère que ce sera vite corrigé, c'est bien trop lourd pour notre réseau que chaque utilisateur télécharge les runtimes à chaque fois depuis le site de javafx, sans compter que ça plante la moitié du temps du aux surcharges et lenteurs de notre réseau local et du territoire (pis je ne vais quand même pas dire aux utilisateurs qu'ils doivent lancer leur appli le soir quand il n'y a plus personne au bureau... )/
    Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.

    suivez mon blog sur Développez.

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 7
    Dernier message: 29/10/2011, 00h38
  2. Réponses: 0
    Dernier message: 24/01/2010, 16h00
  3. [JNA] Faire un wrapper java pour une application C
    Par danim dans le forum Entrée/Sortie
    Réponses: 9
    Dernier message: 30/10/2008, 16h04
  4. Que choisir pour une application de "gestion d'une todo liste" ? Python ou Java ?
    Par Yoshidu62 dans le forum Langages de programmation
    Réponses: 3
    Dernier message: 10/08/2007, 09h03
  5. Quelle Base de données pour une application en Java
    Par Feysal dans le forum Décisions SGBD
    Réponses: 4
    Dernier message: 01/06/2007, 21h05

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