Ressortingction d’access: Le type ‘Application’ n’est pas une API (ressortingction sur la bibliothèque requirejse rt.jar)

Voici le code:

package mscontroller; import javax.swing.*; import com.apple.eawt.Application; public class Main { public static void main(Ssortingng[] args) { Application app = new Application(); app.setEnabledAboutMenu(true); AMEListener listener = new AMEListener(); app.addApplicationListener(listener); JFrame mainFrame = new JFrame("Application Menu Example"); mainFrame.setSize(500, 500); mainFrame.setVisible(true); } } 

voici l’erreur:

 Exception in thread "main" java.lang.Error: Unresolved compilation problems: Access ressortingction: The type 'Application' is not API (ressortingction on required library '/Library/Java/JavaVirtualMachines/jdk1.8.0_11.jdk/Contents/Home/jre/lib/rt.jar') Access ressortingction: The constructor 'Application()' is not API (ressortingction on required library '/Library/Java/JavaVirtualMachines/jdk1.8.0_11.jdk/Contents/Home/jre/lib/rt.jar') Access ressortingction: The type 'Application' is not API (ressortingction on required library '/Library/Java/JavaVirtualMachines/jdk1.8.0_11.jdk/Contents/Home/jre/lib/rt.jar') Access ressortingction: The method 'Application.setEnabledAboutMenu(boolean)' is not API (ressortingction on required library '/Library/Java/JavaVirtualMachines/jdk1.8.0_11.jdk/Contents/Home/jre/lib/rt.jar') AMEListener cannot be resolved to a type AMEListener cannot be resolved to a type at mscontroller.Main.main(Main.java:9) 

eclipse dit ceci:

Ressortingction d’access: Le type ‘Application’ n’est pas une API (ressortingction sur la bibliothèque requirejse ‘/Library/Java/JavaVirtualMachines/jdk1.8.0_11.jdk/Contents/Home/jre/lib/rt.jar’)

Cela m’est arrivé aussi, et les réponses données ici n’étaient pas satisfaisantes, alors j’ai fait mes propres recherches.

Contexte: ressortingctions d’access Eclipse

Eclipse dispose d’un mécanisme appelé ressortingctions d’access pour vous empêcher d’utiliser accidentellement des classes qui, selon Eclipse, ne font pas partie de l’API publique. D’habitude, Eclipse a raison à ce sujet, dans les deux sens: nous ne voulons généralement pas utiliser quelque chose qui ne fait pas partie de l’API publique. Et Eclipse a généralement raison sur ce qui fait et ne fait pas partie de l’API publique.

Problème

Maintenant, il peut y avoir des situations où vous voulez utiliser des non-API publiques, comme sun.misc (vous ne devriez pas, sauf si vous savez ce que vous faites). Et il peut y avoir des situations où Eclipse n’est pas vraiment correct (c’est ce qui m’est arrivé, je voulais juste utiliser javax.smartcardio ). Dans ce cas, nous obtenons cette erreur dans Eclipse.

Solution

La solution consiste à modifier les ressortingctions d’access.

  • Accédez aux propriétés de votre projet Java,
    • c’est-à-dire en sélectionnant “Propriétés” dans le menu contextuel du projet dans le “Package Explorer”.
  • Allez dans “Java Build Path”, onglet “Bibliothèques”.
  • Développez l’entrée de la bibliothèque
  • sélectionner
    • “Règles d’access”,
    • “Modifier …” et
    • “Ajouter …” a “Résolution: accessible” avec un modèle de règle correspondant. Pour moi, c’était ” javax/smartcardio/** “, pour vous cela pourrait être ” com/apple/eawt/** “.

J’avais le même problème. Lorsque j’ai initialement créé le projet Java dans Eclipse, j’ai spécifié JRE 8. Lorsque je suis entré dans le chemin de génération du projet et que j’ai édité la bibliothèque système JRE, l’environnement d’exécution Java 8 a été sélectionné. Lorsque j’ai choisi d’utiliser un “Alernate JRE” (toujours java 8), j’ai corrigé l’erreur pour moi.

Ajouter une autorisation accessible javafx dans eclipse oxygène allez dans project> properties> java build path> libraries> puis développez les librairies et double cliquez sur> Access rules ici, vous définissez la permission Résolution: Accessible Rule Pattern: javafx / **

entrer la description de l'image ici

entrer la description de l'image ici

entrer la description de l'image ici

Pour commencer ( et non lié ), l’instanciation de la classe Application par vous-même ne semble pas être son utilisation prévue. À partir de ce que l’on peut lire depuis sa source , vous devez plutôt utiliser l’instance statique renvoyée par getApplication() .

Passons maintenant aux rapports d’erreur Eclipse. J’ai récemment rencontré un problème similaire: Access ressortingction: The method ... is not API (ressortingction on required project) . J’ai appelé la méthode en question comme une méthode d’object ayant hérité de cette méthode d’une super classe. Tout ce que j’avais à faire était d’append le paquet dans lequel se trouvait la super classe aux paquets importés par mon plugin.

Cependant, il existe de nombreuses causes d’erreurs basées sur “la ressortingction du projet / de la bibliothèque requirejs “. Comme pour le problème décrit ci-dessus, le type que vous utilisez peut avoir des dépendances pour les packages qui ne sont pas exportés par la bibliothèque ou qui ne sont pas exportés. Dans ce cas, vous pouvez essayer de retrouver les paquets manquants et les exporter vous-même, comme suggéré ici , ou essayer les règles d’access. Les autres scénarios possibles incluent:

  • Eclipse veut vous empêcher d’utiliser les packages disponibles ne faisant pas partie de l’API Java publique (solution 1 , 2 )
  • Les dépendances sont satisfaites par de multiples sources, les versions sont en conflit, etc. (solution 1 , 2 , 3 )
  • Eclipse utilise un JRE où un JDK est nécessaire (ce qui peut être le cas ici, d’après ce que vos erreurs disent; solution ) ou la version de JRE / JDK dans le chemin de construction du projet n’est pas la bonne

Cela a fini par ressembler plus à un mélange de problèmes liés aux ressortingctions qu’à une réponse réelle. Mais comme la ressortingction sur les projets requirejs est une erreur si polyvalente à signaler, la recette parfaite est probablement encore à trouver.

J’ai eu ce problème parce que la facette de projet associée à mon projet était la mauvaise version de Java.

Pour résoudre ce problème, j’ai fait ce qui suit:

  1. Cliquez avec le bouton droit sur le projet et sélectionnez Propriétés
  2. Sélectionnez ‘Project Facets’ et modifiez la version de java à plus de 1.4.
  3. Cliquez sur [Appliquer]

Cela reconstruira votre projet et nous espérons que l’erreur sera résolue.

Cela a fonctionné: Propriétés du projet -> ProjectFacets -> Runtimes -> jdk1.8.0_45 -> Appliquer

Si vous rencontrez le même problème avec Spring Tool Suite:

L’EDI sous-jacent de la Spring Tool Suite est en fait Eclipse. J’ai eu cette erreur en essayant juste d’utiliser certaines classes de com.sun.net . Pour supprimer ces erreurs et empêcher leur apparition dans la plate-forme Eclipse Luna SR1 (4.4.2) de STS:

  • Naviguez jusqu’au projet> Propriétés
  • Développez l’en-tête du compilateur Java
  • Cliquez sur Erreurs / Avertissements
  • Développez l’API obsolète et restreinte
  • A côté de “Référence interdite (règles d’access)” sélectionnez “ignorer”
  • En regard de “Référence découragée (règles d’access)”, sélectionnez “ignorer”

Tu es bon pour aller.

Dans la barre de menus supérieure d’Eclipse:

 Windows -> Preferences -> Java -> Comstackr -> Errors/Warnings -> Deprecated and ressortingcted API -> Forbidden reference (access rules): -> change to warning 

Eu le même problème. Voici comment je l’ai résolu: Allez dans l’explorateur de paquets. Cliquez avec le bouton droit sur JRE System Library et accédez à Propriétés. Dans le conteneur Classpath> Sélectionner JRE pour le chemin de construction du projet, sélectionnez la troisième option (JRE par défaut de l’espace de travail).

Source: https://thenewboston.com/forum/topic.php?id=3917

Accédez au paramètre suivant:

Fenêtre -> Préférences -> Java-Comstackr-Errors / Warnings – Référence API interdite et restreinte (règles d’access)

Définissez-le sur Warning ou Ignore .

Nous avons dû modifier notre application pour créer le JDK 1.8 en utilisant Window-> Preferences-> Java-> Installed JREs . Toutefois, après avoir modifié cela, la bibliothèque système JRE spécifiée dans l’explorateur de projets était toujours incorrecte. Pour résoudre ce problème, cliquez avec le bouton droit sur “JRE System Library [false-jre-here]” et passez de l’environnement d’exécution: à “Workspace Default (yer-default-here)”

entrer la description de l'image ici

Dans Eclipse Mars.2 Release (4.5.2):
Project Explorer -> Context menu -> Properties -> JavaBuildPath -> Libraries
sélectionnez JRE … et appuyez sur Modifier: Basculer vers l’espace de travail JRE (jdk1.8.0_77)

Travaille pour moi.

J’ai eclipse JRE 8.112, je ne sais pas si ça compte, mais ce que j’ai fait c’est:

  1. Clic droit sur mon dossier de projets
  2. descendu aux propriétés et cliqué
  3. cliqué sur le dossier du chemin de compilation java
  4. une fois à l’intérieur, j’étais dans l’ordre et l’exportation
  5. J’ai vérifié la bibliothèque du système JRE [jre1.8.0_112]
  6. Ensuite, il a été déplacé au-dessus de l’une des bibliothèques du système JRE.
  7. puis pressé ok

Cela a résolu mon problème.

J’ajoute simplement e (fx) clipse dans le marché d’eclipse. Facile et simple

J’utilise eclipse neon 3. Je voulais juste utiliser javafx.application.Application, alors j’ai suivi la réponse de Christian Hujer ci-dessus et cela a fonctionné. Juste quelques conseils: les règles d’access sont très similaires à la déclaration d’importation. Pour moi, les règles d’access que j’ai ajoutées étaient “javafx / application / **”. Il suffit de remplacer le point dans l’instruction d’importation par une barre oblique et c’est la règle. J’espère que cela pourra aider.