Où se trouve le fichier JavaFX runtime JAR, jfxrt.jar, sous Linux?
j'essaie d'exécuter du code JavaFX avec Eclipse Kepler, avec e (fx)clipse plugin installé, sur une machine Linux, en utilisant:
java version "1.7.0_21"
OpenJDK Runtime Environment (IcedTea 2.3.9) (7u21-2.3.9-5)
OpenJDK 64-Bit Server VM (build 23.7-b01, mixed mode)
ma compréhension est que bien que JavaFX ait été inclus avec la norme JDK depuis la version JDK 7u6, le fichier JavaFX runtime JAR, jfxrt.jar, a été volontairement laissé en dehors du chemin D'exécution Java jusqu'à ce que D'autres tests entre JavaFX et le reste de l'infrastructure java soient terminés. Pour ce raison vous devez l'ajouter manuellement aux bibliothèques de chemin de construction de projet lorsque nous créons un nouveau projet Java.
j'ai cherché ce bocal dans les deux répertoires suivants sans succès:
/usr/lib/jvm/java-7-openjdk-common/jre/lib/
/usr/lib/jvm/java-7-openjdk-amd64/lib
où puis-je le chercher?
4 réponses
L'emplacement de jfxrt.jar in Oracle Java 7 est:
<JRE_HOME>/lib/jfxrt.jar
L'emplacement de jfxrt.jar in Oracle Java 8 est:
<JRE_HOME>/lib/ext/jfxrt.jar
le <JRE_HOME>
dépendra de l'endroit où vous avez installé le Java D'Oracle et peut différer entre les distributions Linux et les installations.
jfxrt.jar n'est pas dans Linux OpenJDK 7 (ce qui est ce que vous utilisez).
un paquet open source qui fournit JavaFX 8 pour les systèmes basés sur Debian comme Ubuntu est disponible. Pour installer ce paquet, il est nécessaire d'installer à la fois le paquet Debian OpenJDK 8 et le paquet Debian OpenJFX. Je ne gère pas Debian, donc je ne sais pas où le paquet Debian OpenJFX installe jfxrt.pot.
Use Oracle Java 8 .
avec Oracle Java 8, JavaFX est à la fois inclus dans le JDK et est sur le chemin de classe par défaut. Cela signifie que les classes JavaFX seront automatiquement trouvées à la fois par le compilateur pendant la construction et par l'exécution lorsque vos utilisateurs utilisent votre application. Donc, utiliser Oracle Java 8 est actuellement la meilleure solution pour votre problème.
OpenJDK pour Java 8 pourrait inclure JavaFX (comme JavaFX pour Java 8 est maintenant open source), mais cela dépendra des assembleurs de paquets OpenJDK pour savoir s'ils choisissent D'inclure JavaFX 8 avec leurs distributions. J'espère qu'ils le feront, car cela devrait aider à éliminer la confusion que vous avez vécue dans votre question et cela fournit également beaucoup plus de fonctionnalités dans OpenJDK.
ma compréhension est que bien que JavaFX a été inclus avec la norme JDK depuis la version JDK 7u6
Oui, mais seulement L'Oracle JDK.
la version JavaFX fournie avec Java 7 n'était pas complètement open source donc elle ne pouvait pas être incluse dans l'OpenJDK (qui est ce que vous utilisez).
Dans vous devez utiliser Java 7 au lieu de Java 8, Vous pouvez télécharger le Oracle JDK pour Java 7 et utiliser cela. JavaFX sera alors inclus avec Java 7. En raison de la façon dont Oracle a configuré Java 7, JavaFX ne sera pas sur le chemin de classe. Si vous utilisez Java 7, vous devrez ajouter à votre chemin de classe et utiliser les outils D'empaquetage JavaFX appropriés pour permettre à vos utilisateurs d'exécuter votre application. Certains outils tels que e (fx)clipse et NetBeans JavaFX project type s'occuperont des problèmes de classpath et des tâches d'empaquetage pour vous.
sur Ubuntu avec OpenJDK, il installé dans /usr/lib/jvm/default-java/jre/lib/ext/jfxrt.jar
(techniquement son un lien vers /usr/share/java/openjfx/jre/lib/ext/jfxrt.jar
, mais il est probablement préférable d'utiliser le default-java
lien)
L'emplacement de jfxrt.jar in JDK 1.8 (Windows) est:
C:\Program Files\Java\jdk1.8.0_05\jre\lib\ext\jfxrt.jar
Mine étaient situés ici sur Ubuntu 18.04 quand J'ai installé JavaFX en utilisant apt install openjfx
(comme noté déjà par @jewelsea ci-dessus)
/usr/share/java/openjfx/jre/lib/ext/jfxrt.jar
/usr/lib/jvm/java-8-openjdk-amd64/jre/lib/ext/jfxrt.jar