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