由于对所需库rt.jar的限制而对类进行访问限制?

我试图编译由Java的WSDL2Java创建的Java 1.4代码,而无需重新创建存根,并在Eclipse中看到此错误。 我假设创建的存根应该只在运行时罐子可用时才进行编译(它们是)。

Access restriction: The type QName is not accessible due to restriction on required library C:Program FilesJavajdk1.5.0_16jrelibrt.jar

完整的类名是javax.xml.namespace.QName

这里到底发生了什么?

这是我试图从香肠重构猪的情况吗? 我最好重新创建存根吗?


还有另一种解决方案也可以。

  • 转到项目属性中的“生成路径”设置。
  • 删除JRE系统库
  • 加回来; 选择“添加库”并选择JRE系统库。 默认为我工作。
  • 这是有效的,因为你在不同的jar文件中有多个类。 删除并重新添加JRE库将使正确的类成为第一个。 如果你想要一个基本的解决方案,请确保你排除了具有相同类的jar文件。

    对我来说,我有: javax.xml.soap.SOAPPart在三个不同的jar: axis-saaj-1.4.jarsaaj-api-1.3.jarrt.jar


    http://www.digizol.com/2008/09/eclipse-access-restriction-on-library.html最适合我。

    在Windows上: Windows - >首选项 - > Java - >编译器 - >错误/警告 - >弃用和受限API - >禁止引用(访问规则): - >更改为警告

    在Mac OS X / Linux上: Eclipse - >首选项 - > Java - >编译器 - >错误/警告 - >弃用和受限API - >禁止引用(访问规则): - >更改为警告


    我遇到了同样的问题。 我在网站上找到了答案:http://www.17ext.com。
    首先,删除JRE系统库。 然后,再次导入JRE系统库。

    我不知道为什么。但它解决了我的问题,希望它能帮助你。

    链接地址: http://www.djcxy.com/p/2027.html

    上一篇: Access restriction on class due to restriction on required library rt.jar?

    下一篇: Why don't C++ compilers define operator== and operator!=?