L'objectif est d'avoir une application Play Framework autonome (2.2) avec une fenêtre d'état supplémentaire contenant des éléments javafx (javafx-8).Ajouter JavaFX (de JDK8) dans sbt (en utilisant le framework de jeu)
Étant donné que les classes JavaFX sont maintenant sur le chemin d'accès par défaut à l'exécution pour une implémentation Oracle Java 8 utilisant javafx. * Dans mes classes et la compilation avec sbt devrait être correcte.
Cependant SBT ne peut pas trouver ces classes et se ferme avec
play.api.UnexpectedException: Unexpected exception[NoClassDefFoundError: javafx/application/Application]
lors de l'exécution
..\path-to-play-framework-2.2\play project run
La meilleure façon de résoudre ce problème semble être la modification de build.sbt dans le projet annuaire. Que puis-je faire pour ajouter le chemin (classe) manquant?
Je suggère de changer le chemin vers jfxrt.jar pour JDK8. Il est disponible sur/jre/lib/ext. Est-il toujours possible d'éviter de définir l'environnement JAVA_HOME? – Vincent
Désolé, je n'ai pas remarqué que vous utilisez JDK8. Le concept devrait être le même de toute façon, vous devez localiser votre fichier jfxrt.jar. L'env JAVA_HOME n'est pas obligatoire mais c'est probablement le moyen le plus couramment utilisé pour obtenir le chemin jre sur un système. Vous pouvez essayer d'autres approches (par exemple copier le fichier jfxrt.jar dans un dossier approprié dans votre projet, fournir le chemin jre par configuration ou essayer de le détecter d'une manière ou d'une autre, etc.), l'important est que sbt sache où se trouve ce pot. et que la commande run forks (car elle ne verra pas les changements que vous faites au classpath). –
Même si j'ai dû modifier ce code et ajouter une solution de repli dans le cas où un JDK/JRE ne sera pas trouvé, je vais marquer cela comme la réponse parce que cela m'a donné la bonne direction. – Vincent