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.
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.
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.
La solution consiste à modifier les ressortingctions d’access.
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 / **
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:
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:
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:
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).
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)”
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:
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.