Voici le code:
package mscontroller;
import javax.swing.*;
import com.apple.eawt.Application;
public class Main {
public static void main(String[] 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 restriction: The type 'Application' is not API
(restriction on required library
'/Library/Java/JavaVirtualMachines/jdk1.8.0_11.jdk/Contents/Home/jre/lib/rt.jar')
Access restriction: The constructor 'Application()' is not API
(restriction on required library
'/Library/Java/JavaVirtualMachines/jdk1.8.0_11.jdk/Contents/Home/jre/lib/rt.jar')
Access restriction: The type 'Application' is not API (restriction on
required library
'/Library/Java/JavaVirtualMachines/jdk1.8.0_11.jdk/Contents/Home/jre/lib/rt.jar')
Access restriction: The method
'Application.setEnabledAboutMenu(boolean)' is not API (restriction 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:
Restriction d'accès: Le type 'Application' n'est pas API (restriction sur la bibliothèque requise '/Library/Java/JavaVirtualMachines/jdk1.8.0_11.jdk/Contents/Home/jre/lib/rt.jar')
Réponses:
Cela m'est arrivé également, et les réponses données ici n'étaient déjà pas satisfaisantes, j'ai donc fait mes propres recherches.
Contexte: Eclipse restrictions d'accès à
Eclipse a un mécanisme appelé restrictions d'accès pour vous empêcher d'utiliser accidentellement des classes qui, selon Eclipse, ne font pas partie de l'API publique. Habituellement, 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 ce qui ne fait pas partie de l'API publique.
Problème
Maintenant, il peut y avoir des situations où vous souhaitez utiliser une non-API publique, 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'a pas vraiment raison (c'est ce qui m'est arrivé, je voulais juste utiliserjavax.smartcardio
). Dans ce cas, nous obtenons cette erreur dans Eclipse.Solution
La solution consiste à modifier les restrictions d'accès.
javax/smartcardio/**
", pour vous, cela pourrait plutôt être "com/apple/eawt/**
".la source
J'avais le même problème. Lorsque j'ai créé le projet java dans Eclipse, j'ai spécifié JRE 8. Lorsque je suis entré dans le chemin de construction du projet et que j'ai édité la bibliothèque système JRE, l'environnement d'exécution Java 8 a été sélectionné. Quand j'ai choisi d'utiliser un "Alernate JRE" (toujours java 8), cela a corrigé l'erreur pour moi.
la source
Ajout de l' autorisation accessible javafx dans eclipse oxygène, allez dans projet> propriétés> chemin de construction java> bibliothèques> puis développez les bibliothèques et double-cliquez sur> règles d'accès, vous définissez l'autorisation Résolution: Modèle de règle accessible: javafx / **
la source
Pour commencer ( et sans rapport avec ), instancier la
Application
classe par vous-même ne semble pas être son utilisation prévue. D'après ce que l'on peut lire à partir de sa source , on s'attend plutôt à ce que vous utilisiez l'instance statique renvoyée pargetApplication()
.Passons maintenant aux rapports d'erreur Eclipse. Je l' ai rencontré un problème similaire récemment:
Access restriction: The method ... is not API (restriction on required project)
. J'ai appelé la méthode en question comme une méthode d'un objet qui a hérité de cette méthode d'une super classe. Tout ce que j'avais à faire était d'ajouter le package dans lequel se trouvait la super classe aux packages importés par mon plugin.Cependant, il existe de nombreuses causes différentes d'erreurs basées sur la "restriction sur le projet / la bibliothèque requis ". Semblable au problème décrit ci-dessus, le type que vous utilisez peut avoir des dépendances vers des packages qui ne sont pas exportés par la bibliothèque ou peuvent ne pas l'être lui-même. Dans ce cas, vous pouvez essayer de retrouver les paquets manquants et de les exporter moi-même, comme suggéré ici , ou essayer les règles d'accès. D'autres scénarios possibles incluent:
Cela a fini par ressembler davantage à un mélange de problèmes liés aux restrictions qu'à une véritable réponse. Mais comme la restriction sur les projets requis est une erreur si polyvalente à signaler, la recette parfaite reste probablement à trouver.
la source
J'ai eu ce problème car 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, espérons-le, l'erreur sera résolue.
la source
Nous avons dû changer notre application pour construire avec le JDK 1.8 en utilisant Window-> Preferences-> Java-> Installed JREs . Cependant, après avoir modifié cela, la bibliothèque système JRE spécifiée dans l'explorateur de projet était toujours incorrecte. Pour résoudre ce problème, cliquez avec le bouton droit de la souris sur "Bibliothèque système JRE [faux-ici]" et passez de l'environnement d'exécution: à "Workspace Default (yer-default-here)"
la source
Cela a fonctionné: Propriétés du projet -> ProjectFacets -> Runtimes -> jdk1.8.0_45 -> Appliquer
la source
Dans la barre de menus supérieure d'Eclipse:
la source
Si vous rencontrez le même problème avec Spring Tool Suite:
L'IDE sous-jacent de Spring Tool Suite est en fait Eclipse. J'ai eu cette erreur en essayant d'utiliser certaines
com.sun.net
classes. Pour supprimer ces erreurs et les empêcher d'apparaître dans la plate-forme Eclipse Luna SR1 (4.4.2) de STS:Vous êtes prêt à partir.
la source
Avait le même problème. Voici comment je l'ai résolu: Allez dans l'Explorateur de packages. Cliquez avec le bouton droit sur la bibliothèque système JRE et accédez à Propriétés. Dans le conteneur Classpath> Sélectionnez JRE pour le chemin de génération du projet, sélectionnez la troisième option (JRE par défaut de Workspace).
Source: https://thenewboston.com/forum/topic.php?id=3917
la source
Accédez au paramètre suivant:
Fenêtre -> Préférences -> Java-Compiler-Errors / Warnings-Deprecated and restricted API-Forbidden reference (règles d'accès)
Réglez-le sur
Warning
ouIgnore
.la source
Nous utilisons IBM Rational Application Developer (RAD) et avons eu le même problème.
Message d'erreur:
Restriction d'accès: Le type 'JAXWSProperties' n'est pas une API (restriction sur la bibliothèque requise 'C: \ IBM \ RAD95 \ jdk \ jre \ lib \ rt.jar')
Solution:
allez dans le chemin de construction java et sous l'onglet Bibliothèque, supprimez la bibliothèque système JRE. Puis à nouveau Ajouter une bibliothèque -> Bibliothèque système JRE
la source
Dans Eclipse Mars.2 Release (4.5.2):
Project Explorer -> Context menu -> Properties -> JavaBuildPath -> Libraries
sélectionnez JRE ... et appuyez sur Edit: Switch to Workspace JRE (jdk1.8.0_77)
Travaille pour moi.
la source
J'ai eclipse JRE 8.112, je ne sais pas si cela compte mais ce que j'ai fait est ceci:
Cela a résolu mon problème.
la source
J'ajoute simplement e (fx) clipse dans le marché eclipse. Facile et simple
la source
J'utilise eclipse néon 3. Je voulais juste utiliser javafx.application.Application, j'ai donc suivi la réponse de Christian Hujer ci-dessus et cela a fonctionné. Juste quelques conseils: les règles d'accès sont très similaires à l'instruction d'importation. Pour moi, les règles d'accès que j'ai ajoutées étaient "javafx / application / **". Remplacez simplement le point dans l'instruction d'importation par une barre oblique et c'est la règle. J'espère que cela pourra aider.
la source
J'ai eu un problème un peu différent. Dans Projet - Propriétés - Bibliothèques - Bibliothèque JRE, j'avais la mauvaise version de la bibliothèque JRE. Supprimez et réglez celui-ci, et le tour est joué - tous les
Access restriction...
avertissements sont partis.la source
Même si son ancienne question, pour moi dans Eclipse, je viens de cliquer avec le bouton droit sur le dossier Src et les propriétés (Alt + Entrée) et la vérification de
Ignore optional compile problems
l'erreur supprimée.la source
Si quelqu'un rencontre ce problème uniquement dans votre outil CI lors de l'exécution de maven, l'astuce pour moi a été de définir explicitement l'environnement d'exécution dans votre
MANIFEST.MF
.Dans mon cas, je l'ai fait en insérant la ligne suivante dans mon fichier manifeste de bundle OSGi:
la source