编译环境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