本文正在参加「Java主题月 – Java Debug笔记活动」,详情查看 活动链接
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:
解决方法:
-
找到项目的 Build Path 设置
-
移除 JRE 系统库
-
再把它加回去。先选择
Add Library
,然后再选择JRE System Library
。默认为我工作。
之所以可行,是因为您在不同的 jar 文件中有多个类。移除后在重新添加 JRE 库能够将正确的类放在第一位。如果你要从根源上解决这个问题,请确保相同的 JRE 文件只有一个。
对我来说,我有:javax.xml.soap.SOAPPart
位于三个不同的 jar 中:axis-saaj-1.4.jar
、saaj-api-1.3.jar
和 rt.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 系统库,然后再添加它。
我不知道这是为什么,但是它解决了我的问题,希望同样能帮到你。