因为对所需库rt.jar的限制而致使对类的访问限制?

我试图在不从新建立存根的状况下编译由IBM的WSDL2Java在Java5上建立的Java 1.4代码,并在Eclipse中看到此错误。 个人假设是,只要运行时jar可用(它们存在),生成的存根就应该编译。 html

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 java

完整的类名称为javax.xml.namespace.QName eclipse

这究竟是怎么回事? 这是我要用香肠重构猪的状况吗? 我最好从新建立存根吗? maven


#1楼

若是您肯定本身应该可以访问给定的类,那么这可能意味着您向项目中添加了几个jar,其中包含名称(或路径)相同但内容不一样的类,而且它们相互掩盖了(一般是旧的自定义build jar包含第3方库的内置旧版本)。 编辑器

例如,当您添加一个实现的jar时: 网站

a.b.c.d1
a.b.c.d2

并且还有仅实现的较旧版本: ui

a.b.c.d1
(d2 is missing altogether or has restricted access)

一切在代码编辑器中均可以正常工做,可是若是“旧”库使新的库黯然失色,则编译过程将失败-d2忽然发现“丢失或没法访问”,即便该库在那里。 spa

解决方案是检查编译时库的顺序,并确保具备正确实现的库优先。 插件


#2楼

抱歉,更新旧的POST。 我收到了报告的问题,并按如下说明解决了问题。 命令行

假设您使用的是Eclipse + m2e maven插件,若是遇到此访问限制错误,请右键单击出现错误的项目/模块->属性->构建路径->库->替换JDK / JRE到在Eclipse工做区中使用的JRE。

我按照上述步骤操做,问题已解决。


#3楼

我遇到了一样的问题。 我在如下网站找到了答案: http : //www.17ext.com
首先,删除JRE系统库。 而后,再次导入JRE系统库。

我不知道为何。可是它解决了个人问题,但愿它能够为您提供帮助。


#4楼

我也一直遇到这个错误,可是个人项目是使用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中能够找到更多信息。 这花了我AGES的时间来解决,所以我想我能够经过发布此答案来帮助其余尝试从命令行修复这些访问限制错误的人。


#5楼

http://www.digizol.com/2008/09/eclipse-access-restriction-on-library.html最适合我。

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

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

相关文章
相关标签/搜索