编译环境MyEclipse8.5。jdk版jdk1.6.0_27

Working with JRE JavaSE1.6
under rt.jar I can clearly see the com.sun.rowset.CachedRowSetImpl class.

报错的位置CachedRowSet crs = new com.sun.rowset.CachedRowSetImpl();

或者是这样的形式CachedRowSet crs = new CachedRowSetImpl();

整个程序都没什么问题,只有这个地方报错。开始查找的都是中文网站,还以为是缺少rowset.jar这jar包。找了好久在网上下载,导入之后还是报错。而且鼠标放在CachedRowSetImpl()方法上的时候会出现下面的提示

Access restriction: The type CachedRowSetImpl is not accessible due to restriction on required library C:\Program Files\Java\jre6\lib\rt.jar

让我十分不解。

出错的原因:

也是英文站点的内容,说是因为这个调用违法了java的技术约束,修改了Java Platform Interface("JPI", identified

最后把这个英文的提示直接google才找到下面的答案。就是把API的引用全改为警告了。也不知道对其他的程序会不会有影响。

在此记录下来,以备今后查询。

解决办法:修改菜单即可

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

或者是把jre用build parth导出再从新导入一个jre错误也会消失

Also had to remove JRE from the build path first and then re-add it !

据说这种解决方法,是因为class文件时用不同的jre编译的,导出之后,再从新导入就会有正确的使用jre的顺序

参考资料:

http://www.coderanch.com/t/540789/JDBC/java/troubles-importing-CachedRowSetImpl

http://stackoverflow.com/questions/860187/access-restriction-on-class-due-to-restriction-on-required-library-rt-jar