1) Dans un projet Java, tu ne peux pas... directement du moins.
Tu veux appeler un script ? C'est a dire ?
- Tu veux interpréter un script ? Il faut ajouter le JAR du compilateur JavaFX (javafxc.jar dans le repertoire lib/shared du JavaFX SDK) dans le projet et utiliser l'API Java d’interpréteur de script (ajoutée dans Java 6). C'est valable tant dans un projet Java que JavaFX.
- Tu veux accéder aux classes JavaFX ?
Tu dois utiliser la reflection JavaFX mais en Java. C'est... euh un poil complexe mais pas impossible.
Voir http://code.google.com/p/jfxtras/sou...e/JXScene.java pour un exemple.
- Dans un projet JavaFX, il n'y a rien de plus a faire
- Dans un projet Java, il faudra bien sur que tous les JARs de JavaFX (tous les JARs des repertoires lib/shared et lib/desktop du JavaFX SDK) soient dans le Classpath et les DLLs natifs (dans lib/desktop dans le PATH).
- Tu veux accéder aux classes JavaFX via une référence passée a un objet Java et lancer des methodes dessus ? Tu dois définir une interface Java et faire que ta classe JavaFX etende cette interface. Tu passe alors a ton objet Java une reference de cette interface et tu peux appeler n'importe quelle methode definie dans l'interface.
- Dans un projet JavaFX, il n'y a rien de plus a faire
- Dans un projet Java, il faudra bien sur que tous les JARs de JavaFX (tous les JARs des repertoires lib/shared et lib/desktop du JavaFX SDK) soient dans le Classpath et les DLLs natifs (dans lib/desktop dans le PATH).
Dans les deux cas il faudra utiliser la reflection JavaFX pour instancier l'objet JavaFX (comme précédemment).
Alternativement tu peux essayer d'utiliser la reflection JavaFX pour lancer des methodes/fonctions directement sur l'objet sans passer par une interface Java. Bon courage.
2) Pour l’exécution via java -jar, il faut que tous les JARs de JavaFX (tous les JARs des repertoires lib/shared et lib/desktop du JavaFX SDK) soient dans le Classpath et les DLLs natifs (dans lib/desktop dans le PATH). Comme ca les classes de l'API JavaFX seront trouvees. Si ce n'est pas le cas tu auras une erreur similaire a :
Exception in thread "main" java.lang.NoClassDefFoundError: com/sun/javafx/runtime/FXObject
Alternativement, il est possible de lancer la classe com.sun.javafx.runtime.main.Main et il faut lui fournir en paramètre le nom de la classe du script de démarrage de l'application (c'est ce que fait Java Web Start). La aussi il faut que les JARS et les DLLs soient accessibles.
Partager