错误信息:Access restriction: the type * is not accessible due to restriction on required library *.jar
Access restriction:The method * is not accessible due to restriction on required library *.jar
Eclipse环境下,项目中导入某些JAR,使用这些JAR中的某些API。结果出现Access restriction错误
Access restriction的原因是因为这些JAR默认包含了一系列的代码访问规则(Access Rules),如果代码中引用了这些访问规则所禁止引用类,可能是标记弃用或者其他访问权限问题,那么就会提示这个错误信息。
一、既然存在访问规则,那么修改访问规则即可。打开项目的Build Path Configuration页面,展开报错的JAR包或者目录,选中Access rules条目,选择右侧的编辑按钮,添加一个访问规则即可。 也可以:
[Project] -> Properties -> Java Build Path -> Libraries -> Remove JRE System Library
二、网上的另外一种解决方案:Window - preference - Java - Compiler - Errors/Warnings界面的Deprecated and restricted API下。把Forbidden reference (access rules): 的规则由默认的Error改为Warning。
这种方案是修改整个Eclipse开发环境,将所有禁止访问的引用由原来的Error(默认)修改为Warning。这种规避方式比较粗暴,个人支持第一种方案。
列编辑快捷键:Alt+Shift+a
快速导入包:ctrl+shift+o
可视化插件:http://www.eclipse.org/windowbuilder/download.php
动态获取当前项目绝对路径:
1.鼠标选中项目,右击菜单,选择 properties
2.出来弹出框,选择resource,location 的值就是你想要的项目绝对路径
Eclipse插件开发 添加第三方引用 NoClassDefFoundError:
1. 插件引用第三方包(普通的jar包或者类文件,不是插件)。
a) 开发环境引用配置,在prject -> properties -> Java build path中设置。
b) 运行环境引用配置,在plugin manifest编辑器的Runtime选项卡下的classpath中添加tset.jar包的引用(在MANIFEST.MF中表现为Bundle-ClassPath: lib/test.jar,如果manifest则在plugin.xml表现为<runtime>节下的引用)
c) plugin.xml -> Build -> Binary Bulid 选中对应的第三方jar
2. 插件B引用插件工程A(非Eclipse插件,而是自己另外一个插件项目中的类)
a) 首先必须将A中的B需要的类暴露(export)出来,如果有MANIFEST.MF文件,则表现为plugin manifest编辑器中runtime节的exported packages,通过这里添加需要export的包。在manifest.mf文件中是Export-Package: com.bbebfe.plugin.xml文件中在runtime->library-><export name=”com.bbebfe.*”/>
b) 在B插件工程的plugin manifest编辑器中的dependencies选项卡中添加对A插件的引用(这要求运行对话框中的plugins列表的workspace plugins中必须包含A插件)。
c) 如果B工程是一个RCP工程,则必须在product编辑器的configuration选项卡中包含A插件工程。