Utilisation de JavaFX dans JRE 8, erreur de «ressortingction d’access»

Lorsque j’essaie d’utiliser des classes liées à javafx dans mon nouveau projet java 8, je reçois une erreur de ressortingction d’access de la part d’eclipse. Jusqu’à présent, la seule «solution» que j’ai pu trouver est de dire à eclipse d’ignorer la ressortingction d’access, mais cela ne me satisfait pas. Un exemple de l’erreur:

Access ressortingction: The type Pane is not accessible due to ressortingction on required library C:\Program Files\Java\jre8_0\lib\ext\jfxrt.jar 

J’utilise Eclipse Kepler avec le correctif Eclipse JDT pour Java 8.

Cela semble être un problème lié au fait que JavaFX ne fait pas partie de l’environnement d’exécution JavaSE.

Je suis maintenant tout à fait confus selon http://en.wikipedia.org/wiki/JavaFX javaFX fait partie de JavaSE. Est-il possible qu’Eclipse ne reconnaisse pas qu’il fait partie du javaSE?

Du sharepoint vue d’Eclipse, l’erreur est totalement correcte car JavaFX provient du chemin d’access aux classes d’extension et n’est pas disponible sur TOUTES les machines virtuelles Java8 (par exemple, ibm!).

Comme indiqué, vous pouvez supprimer ces avertissements en ajoutant des règles d’access ou IMHO. La meilleure solution consiste à installer e (fx) clipse, qui le fait automatiquement pour vous et qui vous fournit même des outils pour JavaFX CSS et FXML.

Vous pouvez récupérer un package tout en un depuis http://efxclipse.bestsolution.at/install.html

Je vais append une autre réponse ici, juste pour fournir ce que je pense est l’approche la plus minimale. Dans ma configuration Eclipse, e (fx) clipse est installé, ce qui fournit un correctif pour cela, ainsi que de nombreuses fonctionnalités de développement utiles que vous souhaiterez certainement si vous écrivez des applications JavaFX. C’est probablement l’approche la plus pratique. Si pour une raison quelconque vous ne voulez pas de ce plugin, la solution décrite dans cette réponse résoudra le problème avec le moins d’autres effets secondaires.

Comme indiqué dans d’autres réponses, Eclipse, par défaut, n’autorise pas l’access aux classes des fichiers jar dans le répertoire jre / lib / ext, car il n’est pas garanti qu’elles soient présentes sur toutes les plates-formes Java. Si vous écrivez une application JavaFX 8, vous supposez que vous vous trouvez sur une plate-forme où jfxrt.jar est disponible à l’emplacement lib / ext.

La solution minimale pour cela est d’autoriser l’access aux classes dans ce fichier jar (et uniquement dans ce fichier jar). Pour ce faire, cliquez avec le bouton droit sur le projet et affichez la boîte de dialog des propriétés du projet. Sélectionnez “Build Path” dans le volet gauche et sélectionnez l’onglet “Bibliothèques”. Vous verrez une entrée “JRE System Library”. Développez cette entrée et vous verrez une sous-entrée “Règles d’access”:

entrer la description de l'image ici

Sélectionnez l’entrée “Règles d’access” et cliquez sur “Modifier”. Cliquez sur “Ajouter”.

entrer la description de l'image ici

Sous “Résolution”, choisissez “Accessible”, et sous “Modèle de règle”, entrez javafx/** :

entrer la description de l'image ici

Cliquez sur OK pour quitter toutes les boîtes de dialog.

Ce paramètre permettra d’accéder à toutes les classes de tous les packages commençant par javafx. , mais conservera la règle sur le dossier ext pour toutes les autres classes et est “minimale” en ce sens.

Encore une fois, ce que vous voulez probablement faire est d’installer le plug-in e (fx) clipse, mais à ma connaissance, c’est la solution avec le moins d’effets secondaires sur votre configuration Eclipse.

J’ai résolu le problème en supprimant et en lisant le JDK sur le chemin de génération. Ne me demandez pas pourquoi cela fonctionne, cependant.

J’ai résolu ce problème en utilisant soigneusement le chemin de génération du projet Eclipse.

  • Affichez les propriétés du projet de votre application et sélectionnez la section “Build Path”.
  • Ajoutez le fichier jre8_0 \ lib \ ext \ jfxrt.jar en tant que “fichier JAR externe” dans l’onglet “Bibliothèques”.
  • Dans l’onglet “Ordre / Export”, assurez-vous que ce fichier jfxrt.jar figure en tête de liste.

Cela permet à Eclipse de voir jfxrt.jar comme un simple fichier JAR tiers. L’ordre est important pour que cela prenne le pas sur l’entrée dans la bibliothèque du système JRE. C’est le même fichier JAR, mais Eclipse le voit différemment.

Vous souhaiterez peut-être modifier les configurations d’exécution afin qu’elles n’utilisent pas la version “Exscope” du fichier jfxrt.jar; Cependant, dans la pratique, cela ne fera pas de différence.

Je l’ai fait avec Java8 et Eclipse Luna; mais le principal serait sûr de travailler avec n’importe quelle combinaison de Java et Eclipse.

Le moyen le plus simple consiste à installer e (fx) clipse – un plug-in pour Eclipse prenant en charge JavaFX:

  1. Sélectionnez Aide -> Installer un nouveau logiciel
  2. Cliquez sur le bouton Ajouter pour append le site suivant:
  3. Cliquez sur OK
  4. Dans “Travailler avec”, sélectionnez le site récemment ajouté “efxclipse”
  5. Cochez la case “e (fx) clipse – install” pour installer tous les composants de cette sélection
  6. Passer aux étapes suivantes pour terminer l’installation
  7. Redémarrez votre Eclipse. S’il ne reconnaît toujours pas la bibliothèque JavaFX, redémarrez-le.

Des informations originales peuvent être trouvées ici: https://www.eclipse.org/efxclipse/install.html#for-the-lazy

  • aller sur le chemin de construction du projet en cours

sous Bibliothèques

  • sélectionnez la ” Bibliothèque système JRE [jdk1.8xxx]”
  • cliquez sur modifier
  • et sélectionnez “JRE par défaut de l’espace de travail (jdk1.8xx)” OU JRE alternatif
  • Cliquez sur Terminer
  • Cliquez sur OK

entrer la description de l'image ici

Remarque: assurez-vous que, dans Eclipse / Preferences (PAS le projet) / Java / JRE installé, le jdk pointe vers le dossier JDK, pas le JRE C: \ Program Files \ Java \ jdk1.8.0_74

entrer la description de l'image ici

Suivez ces étapes:
1. Ajoutez le fichier jfxrt.jar (dans votre dossier d’installation) en tant que “fichier JAR externe” dans l’onglet “Bibliothèques”.

  1. Dans l’onglet “Ordre / Export”, assurez-vous que ce fichier jfxrt.jar figure en tête de liste.

cela a fonctionné pour moi

Je sais que cela a déjà été répondu, mais je trouve les solutions proposées maladroites.

  1. Je ne veux pas installer un plugin pour éviter ce que je considère comme une erreur non valide.
  2. L’ajout de jfxrt.jar en tant que fichier jar externe fonctionnera, mais c’est une mauvaise idée si vous prévoyez d’exporter, car jfxrt.jar sera également exporté. Probablement pas ce que vous voulez.

Une autre option

Dans la version de Mars (et éventuellement les versions antérieures), vous pouvez désactiver les erreurs de ressortingctions d’access. En dessous de

Vue Java-> Comstackr-> Erreurs / Avertissements

et

“API dépréciée et restreinte”

vous pouvez définir “Référence interdite (règle d’access)” à ignorer.

entrer la description de l'image ici

Comme James_D a déjà suggéré, j’ai ajouté des règles d’access à mon fichier classpath. J’ai désinstallé le plug-in e (fx) clipse pour le moment car il a un bug de validation css (voir Comment désactiver l’avertissement CSS “propriété inconnue” dans Eclipse Mars? ).

Voici mon entrée dans le fichier classpath du conteneur JRE:

          

J’ai eu le même problème. J’ai utilisé la solution de James_D mais sa solution exacte n’a pas fonctionné pour moi. Mais utiliser **/javafx/** au lieu de javafx/** résolu le problème pour moi. J’espère que cela pourra aider.

PS: Je posterais ceci comme un commentaire sous la solution de James_D mais je viens de m’inscrire et je n’avais pas assez de “réputation” pour le faire.

Étape 1: Accédez à votre fichier jfxrt.jar. C: \ Program Files \ Java \ jre1.8.0_111 \ lib \ ext

Étape 2 Copiez le fichier jfxrt.jar

Étape 3: Accédez à Eclipse, Créez un nouveau dossier comme celui-ci: [Création du nom de dossier lib pour placer notre fichier jfxrt.jar] [2] [2]: https://i.stack.imgur.com/YsJ5S.png

Étape 4: Sélectionnez le dossier lib et appuyez sur CTRL + V pour coller le fichier jfxrt.jar [Coller votre jfxrt.jar] [1]: https://i.stack.imgur.com/Ljogu.png

Étape 5: Cliquez avec le bouton droit sur jfxrt.jar et définissez le chemin de construction.