"is not accessible due to restriction on requir...

 import com.sun.image.codec.jpeg.JPEGCodec;
 import com.sun.image.codec.jpeg.JPEGEncodeParam;
 import com.sun.image.codec.jpeg.JPEGImageEncoder;
MyEclipse中引入上述包会提醒以下错误:
Access restriction: The type JPEGCodec is not accessible due to restriction on required library D:\Java\jdk1.7.0\jre\lib\rt.jar

这个错误在MyEclipse使用本身安装的JRE System Library时会出现(图1),而使用MyEclipse的Workspace default JRE就不会出现(图2),缘由在于,这两个不一样的库中的rt.jar包有不一样的限制,如图: java


图1 ui


图2 spa

这个限制指的是:某些rt.jar中的部分包,如com/sun/**下面的包是默认不容许被引入的,如上述图1中所说的164 rules defined,就指定了哪些包能够被引入哪些包不能被引入,并且这个规则不能被更改。 rest

能够在项目-属性-Java Build Path-Libraries的Access rules中看到,能够自定义的规则(可是这个规则不能覆盖rt.jar中已经定义的规则,因此像网上说的那样更改这里就能够貌似行不通,不过能够用来讲明这个规则)【Sorry,前面括号中这句话有问题,由于以前我在定义规则的时候sun包写的是sun/**,而正确的是com/sun/**。改成正确的规则以后确实能够生效。这是方法一。】,如图3,图4。 code


图3 ip


图4 io

再看下图,就知道为何那些定义的规则能够生效了,引入那些被Forbidden规则限制的包,就会报Error的错误,把这个Error改为Warning,就不会报错了。这个是方法二。方法三,就是如上述图1图2所说,换成rt.jar中没有限制规则的库,如MyEclipse自带的库。 class


图5 import

但愿已经说明白了。 require

相关文章
相关标签/搜索