www*_*139 164 java eclipse macos jar
这是代码:
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);
}
}
Run Code Online (Sandbox Code Playgroud)
这是错误:
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)
Run Code Online (Sandbox Code Playgroud)
eclipse说这个:
访问限制:"应用程序"类型不是API(对必需库'/Library/Java/JavaVirtualMachines/jdk1.8.0_11.jdk/Contents/Home/jre/lib/rt.jar'的限制)
Chr*_*jer 255
这也发生在我身上,这里给出的答案已经不满意了,所以我做了自己的研究.
Eclipse有一种称为访问限制的机制,可以防止您意外使用Eclipse认为不属于公共API的类.通常,Eclipse在这两种意义上都是正确的:我们通常不希望使用不属于公共API的东西.Eclipse通常是关于什么是什么,什么不是公共API的一部分.
现在,在某些情况下,您可能希望使用公共非API,sun.misc(除非您知道自己在做什么,否则不应该这样做).并且可能存在Eclipse不正确的情况(这就是我发生的事情,我只想使用javax.smartcardio).在这种情况下,我们在Eclipse中遇到此错误.
解决方案是更改访问限制.
javax/smartcardio/**"对你而言,它可能是" com/apple/eawt/**".Amb*_*ber 78
我遇到了同样的问题.当我最初在Eclipse中创建java项目时,我指定了JRE 8.当我进入项目的构建路径并编辑JRE系统库时,选择了Java 8执行环境.当我选择使用"Alernate JRE"(仍然是java 8)时,它为我修复了错误.
J. *_*kel 22
首先(和不相关),Application自己实例化类似乎不是它的预期用途.从可以从其源代码中读取的内容,您可能希望使用返回的静态实例getApplication().
现在让我们来看看Eclipse报告的错误.我最近遇到过类似的问题:Access restriction: The method ... is not API (restriction on required project).我将有问题的方法称为从超类继承该方法的对象的方法.我所要做的就是将超类所包含的包添加到我的插件导入的包中.
但是,基于"对所需项目/库的限制",存在许多不同的错误原因.与上述问题类似,您使用的类型可能依赖于未由库导出或可能不会自行导出的包.在这种情况下,您可以尝试跟踪丢失的软件包并按照此处的建议自行导出,或尝试访问规则.其他可能的情况包括:
这最终更像是与限制相关的问题,而不是实际的答案.但由于对所需项目的限制是如此多样化的错误报道,因此可能仍然可以找到完美的配方.
小智 17
我有这个问题,因为与我的项目相关的项目方面是错误的java版本.
为了解决这个问题,我做了以下工作:
这将重建您的项目,希望错误将得到解决.
Din*_*ale 12
我们必须使用Window-> Preferences-> Java-> Installed JRE更改应用程序以针对JDK 1.8进行构建。但是,更改后,在Project Explorer中指定的JRE系统库仍然不正确。要解决此问题,请右键单击“ JRE系统库[wrong-jre-here]”,然后从“执行环境”更改为“ Workspace Default(在此为yer-default-here)”。
小智 11
在Eclipse顶部菜单栏中:
Windows -> Preferences -> Java -> Compiler -> Errors/Warnings ->
Deprecated and restricted API -> Forbidden reference (access rules): -> change to warning
Run Code Online (Sandbox Code Playgroud)
如果您使用Spring Tool Suite遇到同样的问题:
Spring Tool Suite的底层IDE实际上是Eclipse.我刚刚尝试使用某些com.sun.net类时遇到此错误.要删除这些错误并防止它们在STS的Eclipse Luna SR1(4.4.2)平台中弹出:
你很高兴.
有同样的问题.以下是我解决它的方法:转到Package Explorer.右键单击JRE System Library并转到Properties.在类路径容器>为项目构建路径选择JRE中,选择第三个选项(工作区默认JRE).
资料来源:https: //thenewboston.com/forum/topic.php?id = 3917
我们使用 IBM Rational Application Developer (RAD) 并遇到了同样的问题。
错误信息:
访问限制:类型'JAXWSProperties' 不是API(对所需库'C:\IBM\RAD95\jdk\jre\lib\rt.jar'的限制)
解决方案:
转到 java 构建路径并在库选项卡下,删除 JRE 系统库。然后再次添加库 --> JRE 系统库
小智 5
转到以下设置:
Window -> Preferences -> Java-Compiler-Errors/Warnings-Deprecated 和受限 API-Forbidden 参考(访问规则)
将其设置为Warning或Ignore。
| 归档时间: |
|
| 查看次数: |
238773 次 |
| 最近记录: |