Lorsque j'essaie d'utiliser des classes liées à javafx dans mon nouveau projet Java 8, je reçois une erreur de restriction d'accès d'Eclipse. Jusqu'à présent, la seule "solution" que j'ai pu trouver consiste à indiquer à Eclipse: ignorer la restriction d'accès, mais je ne suis pas satisfait de cela. Un exemple d'erreur:
Access restriction: The type Pane is not accessible due to
restriction 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 durement confondu selon http://en.wikipedia.org/wiki/JavaFX javaFX fait partie de JavaSE. Est-il possible qu'Eclipse ne reconnaisse pas qu'il fait partie de javaSE?
Du point de vue d’Eclipse, l’erreur est totalement correcte car JavaFX provient du chemin de classe d’extension et n’est pas disponible sur TOUS les ordinateurs virtuels Java8 (par exemple, ibm!).
Comme indiqué, vous pouvez supprimer ces avertissements en ajoutant des règles d'accès ou, à mon humble avis, 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 paquet tout en un à partir de http://efxclipse.bestsolution.at/install.html
Je vais ajouter une autre réponse ici, juste pour fournir ce que je pense être l'approche la plus minimale. Dans ma configuration Eclipse, e (fx) clipse est installé, ce qui fournit un correctif, 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 souhaitez pas utiliser ce plug-in, la solution décrite dans cette réponse résoudra le problème en réduisant le plus possible le nombre d'effets secondaires.
Comme indiqué dans d'autres réponses, Eclipse interdit par défaut l'accès aux classes des fichiers jar du répertoire jre/lib/ext, car leur présence n'est pas garantie sur toutes les plates-formes Java. Si vous écrivez une application JavaFX 8, vous supposez que vous êtes sur une plate-forme sur laquelle jfxrt.jar est disponible à l'emplacement lib/ext.
Ainsi, le correctif minimal consiste à autoriser l'accès aux classes de ce fichier jar (et uniquement de ce fichier jar). Pour ce faire, cliquez avec le bouton droit sur le projet et ouvrez la boîte de dialogue des propriétés du projet. Sélectionnez "Chemin de construction" dans le volet de gauche, puis 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'accès":
Sélectionnez l'entrée "Règles d'accès" et cliquez sur "Modifier". Cliquez sur "Ajouter".
Sous "Résolution", choisissez "Accessible", et sous "Modèle de règle", entrez javafx/**
:
Cliquez sur OK pour quitter tous les dialogues.
Ce paramètre autorisera l’accès à toutes les classes des paquets commençant par javafx.
, mais conservera la règle sur le dossier ext pour toutes les autres classes et est "minimal" dans ce sens.
Encore une fois, ce que vous voulez probablement vraiment faire est d’installer le plugin e (fx) clipse, mais à ma connaissance, c’est la solution qui présente le moins d’effets secondaires sur votre configuration Eclipse.
J'ai résolu le problème en supprimant et en lisant le JDK dans le chemin de génération. Ne me demandez pas pourquoi cela fonctionne, cependant.
Le moyen le plus simple consiste à installer e (fx) clipse, un plugin permettant à Eclipse de prendre en charge JavaFX:
Les informations originales peuvent être trouvées ici: https://www.Eclipse.org/efxclipse/install.html#for-the-lazy
J'ai résolu ce problème en utilisant avec précaution le chemin de génération du projet Eclipse.
En faisant cela, Eclipse voit le fichier jfxrt.jar comme un fichier JAR tiers standard. L'ordre est important pour que cela ait priorité sur l'entrée dans la bibliothèque système JRE. C'est le même fichier JAR, mais Eclipse le voit différemment.
Vous voudrez peut-être modifier les configurations d'exécution pour ne pas utiliser la version "Exportée" du fichier jfxrt.jar; Cependant, dans la pratique, cela ne fera aucune différence.
Je l'ai fait avec Java8 et Eclipse Luna; mais je suis sûr que le principal travaillerait avec n’importe quelle combinaison de Java et d’Eclipse.
sous Bibliothèques
Remarque: assurez-vous que dans Eclipse/Preferences (PAS le projet)/Java/JRE installé, le jdk pointe vers le dossier JDK et non vers le JRE C :\Program Files\Java\jdk1.8.0_74
Je sais que cela a déjà été répondu, mais je trouve les solutions proposées maladroites.
Une autre option
Dans la version 'Mars' (et éventuellement des versions antérieures), vous pouvez désactiver les erreurs de restriction d'accès. Sous
Java-> Compilateur-> Vue Erreurs/Avertissements
et
"API obsolète et restreinte"
vous pouvez définir "Référence interdite (règle d'accès)" à ignorer.
Suivez ces étapes:
Ajoutez le fichier jfxrt.jar (à partir de votre dossier d'installation) en tant que "fichier JAR externe" dans l'onglet "Bibliothèques".
Dans l'onglet 'Order/Export', assurez-vous que ce fichier jfxrt.jar figure en premier dans la liste.
Cela a fonctionné pour moi.
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 en utilisant **/javafx/**
au lieu de javafx/**
résolu le problème pour moi. J'espère que ça t'as aidé.
PS: Je posterais ceci comme commentaire sous la solution de James_D mais je viens juste de m'inscrire et je n'ai pas assez de "réputation" pour le faire.
Comme James_D l'a déjà suggéré, j'ai ajouté des règles d'accès à mon fichier de chemin de classe. J'ai désinstallé le plugin e (fx) clipse pour le moment car il a un bogue 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:
<classpathentry kind="con" path="org.Eclipse.jdt.launching.JRE_CONTAINER/org.Eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8">
<attributes>
<attribute name="maven.pomderived" value="true"/>
</attributes>
<accessrules>
<accessrule kind="accessible" pattern="javafx/**"/>
<accessrule kind="accessible" pattern="com/Sun/javafx/**"/>
</accessrules>
</classpathentry>
É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 mettre 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 [Collez votre fichier jfxrt.jar] [1] [1]: https://i.stack.imgur.com/Ljogu .png
Étape 5: Cliquez avec le bouton droit sur jfxrt.jar et définissez-le comme chemin de construction.