协慌网

登录 贡献 社区

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

我正在尝试编译由 IBM 的 WSDL2Java 在 Java5 上创建的 Java 1.4 代码,而无需重新创建存根并在 Eclipse 中看到此错误。我假设创建的存根应该只要运行时 jar 可用就可以编译(它们是)。

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

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

到底发生了什么?

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

答案

还有另一种解决方案也有效。

  1. 转到项目属性中的 “ 构建路径”设置。
  2. 删除JRE 系统库
  3. 加回来; 选择“添加库”并选择JRE 系统库 。默认对我有用。

这是有效的,因为您在不同的 jar 文件中有多个类。删除和重新添加 JRE 库将使正确的类成为第一。如果您想要一个基本的解决方案,请确保使用相同的类排除 jar 文件。

对我来说,我有: javax.xml.soap.SOAPPart在三个不同的罐子里: 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 系统库。

我不知道为什么。但是它解决了我的问题,希望它可以帮到你。