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

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

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

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


当前回答

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

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

其他回答

转到项目财产中的“生成路径”设置。Windows->首选项->Java编译器删除JRE系统库添加另一个具有“完美匹配”的JRE清理并重新构建项目。这对我有用。

我也遇到过这个错误,但我的项目是在命令行上使用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中找到。这让我花了好几年的时间,所以我想我会通过发布这个答案来帮助其他任何试图从命令行修复这些访问限制错误的人。

通过构建路径添加正确的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->禁止的引用(访问规则):->更改为警告

对我来说,我是这样解决的:

转到当前项目的生成路径

在库下

选择“JRE系统库[jdk1.8xxx]”单击“编辑”并选择“工作区默认JRE(jdk1.8xx)”或“备用JRE”单击“完成”单击“确定”

注意:确保在Eclipse/Preferences(而不是项目)/Java/Installed JRE中,jdk指向jdk文件夹,而不是JRE C:\Program Files\Java\jdk1.8.0_74