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

2022-08-31 04:03:44

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

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

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

  1. 转到项目属性中的“生成路径”设置。
  2. 删除 JRE 系统库
  3. 重新添加;选择“添加库”,然后选择 JRE 系统库。默认值对我有用。

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

对我来说,我有:在三个不同的罐子中:,和javax.xml.soap.SOAPPartaxis-saaj-1.4.jarsaaj-api-1.3.jarrt.jar


答案 2

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

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

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


推荐