导入特殊jar设置
在通常的开发中可能会去看下API的源代码,自己有时候也可以模仿API中的源代码做一些研究,可是有些特殊jar包中的类报无法导入的错误:
The import sun.misc.ProxyGenerator is never used
- Access restriction: The type 'ProxyGenerator' is not API (restriction on required library 'C:
\Program Files\Java\jdk1.7.0_75\jre\lib\rt.jar'。
例如上述sun.misc中的ProxyGenerator类,为了研究Java动态代理需要用到此类做一些开发工作,下面对网上提供的导入特殊jar的方案和自己的实践做一些总结。
第一种方案,也是最简单的方案:
1、打开项目属性》Java Build Path》选择JRE System Library》remove;
然后再重新添加JRE system library;
2、点击Add library》Next》选择相应的JDK版本(建议与刚开始的一样的版本)》finish。
通过上述操作后,特殊jar导入错误就会消失。
具体操作如下所示:
第二种方案 设置JRE System Library的access rules属性
1、打开项目属性》Java Build Path》选择JRE System Library》点击左边的三角形 打开下拉菜单》双击access rules》打开其属性;
2、点击右边的Add》打开access rules设置》选择resolution为accessible》按照提示在下面的rule pattern输入相应的pattern;
pattern 可以输入** 代表所有的包均可导入 ,也可以输入相应包路径下面的类可以进入访问,例如sun/misc/**等等;
3、所有的选择完成之后一步步OK即可,回到工作空间,红色错误即消失。
具体操作如下所示:
第三种方案 修改Java编译器设置
1、打开Windows 》 点击Preferences 》 选择Java 》打开Compiler ;
2、选择Errors/Warnings 》点开右边的Deprecated and trstricted API选项 》找到 Forbidden reference (access rules) 菜单》将菜单右边的下拉框改变为 warning;
3、最后一步步OK即可。
具体操作如下所示:
总结:
通过上述三种方案均可达到导入特殊包(sun.*、com.sun.*等),访问里面的类;但是这样操作会存在一定的风险,对于以后代码的可以扩展性、通用性、安全性等,因为这些包不是J2SE规范里面声明的类。
也就是说这些类可能在Windows下可用,但到了Linux或者其他平台下不可用;又或者这些类在jdk的一下个版本可能会被删除;又或者这些类本身就存在安全隐患等等问题,请慎重!