我試圖在不從新建立存根的狀況下編譯由IBM的WSDL2Java在Java5上建立的Java 1.4代碼,並在Eclipse中看到此錯誤。 個人假設是,只要運行時jar可用(它們存在),生成的存根就應該編譯。 html
Access restriction: The type QName is not accessible due to restriction on required library C:\\Program Files\\Java\\jdk1.5.0_16\\jre\\lib\\rt.jar
java
完整的類名稱爲javax.xml.namespace.QName
eclipse
這究竟是怎麼回事? 這是我要用香腸重構豬的狀況嗎? 我最好從新建立存根嗎? maven
若是您肯定本身應該可以訪問給定的類,那麼這可能意味着您向項目中添加了幾個jar,其中包含名稱(或路徑)相同但內容不一樣的類,而且它們相互掩蓋了(一般是舊的自定義build jar包含第3方庫的內置舊版本)。 編輯器
例如,當您添加一個實現的jar時: 網站
a.b.c.d1 a.b.c.d2
並且還有僅實現的較舊版本: ui
a.b.c.d1 (d2 is missing altogether or has restricted access)
一切在代碼編輯器中均可以正常工做,可是若是「舊」庫使新的庫黯然失色,則編譯過程將失敗-d2忽然發現「丟失或沒法訪問」,即便該庫在那裏。 spa
解決方案是檢查編譯時庫的順序,並確保具備正確實現的庫優先。 插件
抱歉,更新舊的POST。 我收到了報告的問題,並按如下說明解決了問題。 命令行
假設您使用的是Eclipse + m2e maven插件,若是遇到此訪問限制錯誤,請右鍵單擊出現錯誤的項目/模塊->屬性->構建路徑->庫->替換JDK / JRE到在Eclipse工做區中使用的JRE。
我按照上述步驟操做,問題已解決。
我遇到了一樣的問題。 我在如下網站找到了答案: http : //www.17ext.com 。
首先,刪除JRE系統庫。 而後,再次導入JRE系統庫。
我不知道爲何。可是它解決了個人問題,但願它能夠爲您提供幫助。
我也一直遇到這個錯誤,可是個人項目是使用Maven和tycho編譯器(這是一組OSGi插件)在命令行上構建的。 通過大量篩選,但仍是在Eclipse中而不是在命令行中解決了一樣的問題,而後我在Tycho開發人員論壇上找到了一條消息 ,回答了個人問題,使用pom.xml
配置來忽略編譯器有關訪問的警告限制:
<plugin> <groupId>org.eclipse.tycho</groupId> <artifactId>tycho-compiler-plugin</artifactId> <version>${tycho.version}</version> <configuration> <compilerArgument>-warn:+discouraged,forbidden</compilerArgument> </configuration> </plugin>
在Tycho FAQ中能夠找到更多信息。 這花了我AGES的時間來解決,所以我想我能夠經過發佈此答案來幫助其餘嘗試從命令行修復這些訪問限制錯誤的人。
http://www.digizol.com/2008/09/eclipse-access-restriction-on-library.html最適合我。
在Windows上: Windows->首選項-> Java->編譯器->錯誤/警告->不推薦使用和受限制的API->禁止引用(訪問規則):->更改成警告
在Mac OS X / Linux上: Eclipse->首選項-> Java->編譯器->錯誤/警告->不推薦使用和受限制的API->禁止引用(訪問規則):->更改成警告