由于对所需库 rt.jar 的限制而导致对类的访问限制?| Java Debug 笔记

本文正在参加「Java主题月 – Java Debug笔记活动」,详情查看 活动链接

原问题地址:stackoverflow.com/questions/8…

Q:

我试图在不重新创建 stub 的情况下编译由 IBM 的 WSDL2Java 在 Java5 上创建的 Java 1.4 代码,并在 Eclipse 中看到此错误。

我的假设是,只要运行时 jar 可用(只要有),生成的 stub 就应该编译。

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

这到底是怎么回事?这是我要用香肠重构猪的情况吗?我是不是最好去创建 stub ?

A:

解决方法:

  1. 找到项目的 Build Path 设置

  2. 移除 JRE 系统库

  3. 再把它加回去。先选择 Add Library,然后再选择 JRE System Library 。默认为我工作。

之所以可行,是因为您在不同的 jar 文件中有多个类。移除后在重新添加 JRE 库能够将正确的类放在第一位。如果你要从根源上解决这个问题,请确保相同的 JRE 文件只有一个。

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

Other

#125

www.digizol.com/2008/09/ecl… 这篇文章解决了我的问题

On Windows: Windows -> Preferences -> Java -> Compiler -> Errors/Warnings -> Deprecated and restricted API -> Forbidden reference (access rules): -> change to warning

On Mac OS X/Linux: Eclipse -> Preferences -> Java -> Compiler -> Errors/Warnings -> Deprecated and restricted API -> Forbidden reference (access rules): -> change to warning

#68

我遇到了同样的问题,我在这个网站找到了答案:

首先删除 JRE 系统库,然后再添加它。

我不知道这是为什么,但是它解决了我的问题,希望同样能帮到你。

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享