"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包有不同的限制,如图:

"is not accessible due to restriction on requir..._第1张图片

图1

"is not accessible due to restriction on requir..._第2张图片

图2

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

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

"is not accessible due to restriction on requir..._第3张图片

图3

"is not accessible due to restriction on requir..._第4张图片

图4

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

"is not accessible due to restriction on requir..._第5张图片

图5

希望已经说明白了。


你可能感兴趣的:(TO,on,library,accessible,required,Restriction,is,not,due)