我试图在Java5上编译由IBM的WSDL2Java创建的Java1.4代码,而不重新创建存根,并在Eclipse中看到了这个错误。我的假设是,只要运行时jar可用(它们可用),生成的存根就应该编译。

访问限制:由于对所需库C:\Program Files\Java\jdk1.5.0_16\jre\lib\rt.jar的限制,QName类型不可访问

完整类名为javax.xml.namespace.QName

这里到底发生了什么?这是我试图用香肠重构猪的例子吗?我最好重新创建存根吗?


当前回答

除了Nels Beckman的解决方案,我还有以下建议:

在ConfigureBuild Path下,我必须重新排列order和Export下条目的顺序。

此外,作为一名EclipsePDE开发人员,我需要重新排列MANIFEST.MF中依赖项的顺序,将有问题的包添加到列表的第一位。

使用这些刻度盘,同时在其间运行Project>Clean,我能够解决这些警告。

其他回答

在我的案例中,生成路径JRE和执行环境中安装的JRE之间不匹配。我进入了项目>财产>Java编译器。底部有一条警告信息。

我单击链接“Installed JRE”、“Execution environment”、“Java build path”,将JDK版本更改为1.7,警告消失。

通过构建路径添加正确的JRE系统是解决方案,但您的eclipse可能仍然存在错误。要解决此问题,请转到Java Build路径-->Order and Export,然后将JRE系统库移到顶部。这解决了我的问题。

http://www.digizol.com/2008/09/eclipse-access-restriction-on-library.html对我来说效果最好。

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

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

我也遇到过这个错误,但我的项目是在命令行上使用Maven和tycho编译器构建的(这是一组OSGi插件)。在对有相同问题但在Eclipse中而不是在命令行中解决的人进行了大量筛选后,我在Tycho开发者论坛上发现了一条消息,回答了我的问题,使用pom.xml中的配置忽略了关于访问限制的编译器警告:

<plugin>
    <groupId>org.eclipse.tycho</groupId>
    <artifactId>tycho-compiler-plugin</artifactId>
    <version>${tycho.version}</version>
    <configuration>
        <compilerArgument>-warn:+discouraged,forbidden</compilerArgument>
    </configuration>
</plugin>

更多信息可以在Tycho FAQ中找到。这让我花了好几年的时间,所以我想我会通过发布这个答案来帮助其他任何试图从命令行修复这些访问限制错误的人。

转到项目财产中的Java构建路径。删除现有的JRE系统库然后再次添加,即添加库-->JRE库-->选择JRE-->完成。最后选择order和export选项卡,选择JRE Lib并移至顶部。就是这样。