代码如下:

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);
    }
}

错误如下:

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说:

访问限制:'Application'类型不是API(对必需库'/ library /Java/JavaVirtualMachines/jdk1.8.0_11.jdk/Contents/Home/jre/lib/rt.jar'的限制)


当前回答

如果有人在运行maven时只在您的CI工具中遇到这个问题,那么对我来说,诀窍是在您的MANIFEST.MF中显式地定义执行环境。

在我的例子中,我通过在我的OSGi包清单文件中插入以下行来做到这一点:

Bundle-RequiredExecutionEnvironment: JavaSE-1.8

其他回答

在Eclipse顶部菜单栏中:

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

我们使用IBM Rational Application Developer (RAD),也遇到了同样的问题。

ErrorMessage:

访问限制:'JAXWSProperties'类型不是API(对必需库'C:\IBM\RAD95\jdk\jre\lib\rt.jar'的限制)

解决方案:

进入java构建路径,在Library标签下,删除JRE System Library。然后再次添加库—> JRE系统库

我们不得不改变我们的应用程序,使用windows ->首选项->Java->安装的jre来构建JDK 1.8。但是,在更改后,在项目资源管理器中指定的JRE系统库仍然不正确。要解决这个问题,右键单击“JRE系统库[wrong-jre-here]”,并将执行环境:更改为“工作区默认(yer-default-here)”

如果你在使用Spring工具套件时有同样的问题:

Spring工具套件的底层IDE实际上是Eclipse。我刚刚在尝试使用一些com.sun.net类时得到了这个错误。要删除这些错误并防止它们在STS的Eclipse Luna SR1(4.4.2)平台中弹出:

导航到项目>属性 展开Java Compiler标题 点击错误/警告 扩展已弃用和受限的API 在“禁止引用(访问规则)”旁边选择“忽略” 在“不鼓励引用(访问规则)”旁边选择“忽略”

你可以出发了。

删除现有/配置的系统库: Eclipse(IDE) -> Project Explorer -> Project Name-> (Option) Build Path -> Configure Build Path -> Java Build Path -> Libraries -> (Select) JRE System Library [(For me)jre1.8.0_231] -> Remove。

目前你在同一位置: Eclipse(IDE) ->项目资源管理器->项目名称->(选项)构建路径->配置构建路径-> Java构建路径->库

现在再次添加相同的系统库: Add Library -> JRE System Library -> Workspace default JRE ((For me)jre1.8.0_231) -> Finish -> Apply -> Close

现在等着完成它。