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

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

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

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


当前回答

我也遇到过这个错误,但我的项目是在命令行上使用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系统库[jdk1.8xxx]”单击“编辑”并选择“工作区默认JRE(jdk1.8xx)”或“备用JRE”单击“完成”单击“确定”

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

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

我也有这个问题。显然,我在构建路径中将JRE设置为1.5而不是1.6。

只需更改项目的构建路径库的顺序。右键单击项目>构建路径>配置构建路径>选择顺序和导出(选项卡)>更改条目的顺序。我希望将“JRE系统库”移到底部会起作用。这对我来说很有效。简单又简单。。。。!!!

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