访问限制:由于对所需库的限制而无法访问.. \ jre \ lib \ rt.jar

时间:2012-02-13 19:24:44

标签: java access-denied

我正在尝试从后面修改一些遗留代码并获得以下类型的错误:

访问限制:由于对所需库的限制,无法访问Headers类型的方法create(JAXBRIContext,Object).. \ jre \ lib \ rt.jar

对于这些导入语句:

import com.sun.xml.internal.bind.api.JAXBRIContext;
import com.sun.xml.internal.ws.api.message.Header;
import com.sun.xml.internal.ws.api.message.Headers;
import com.sun.xml.internal.ws.developer.WSBindingProvider;

一直在寻找这可能意味着什么,以及如何解决它,但无法找到明确的答案。有些帖子似乎暗示我有一些JAR包含了实现类,这些类现在可以作为核心java发行版的一部分使用,但据我所知,我包含的JAR中没有包含上述类的不同/旧版本。 / p>

任何人都能告诉我这个错误是什么以及我如何解决这个问题?

先谢谢你的帮助,

奥利

10 个答案:

答案 0 :(得分:126)

我碰到了类似的东西,我认为警告的原因是Eclipse试图阻止您使用作为工作区JRE的一部分安装但不属于公众的内部com.sun软件包Java API。

Justin在回答中说,更改编译器设置可以隐藏警告。更细粒度的方法是修改构建路径以明确允许访问有问题的包:

  1. 打开Java Build Path项目属性窗口的Libraries选项卡。
  2. 展开JRE系统库条目。
  3. 选择“访问规则”并点击“编辑”按钮。
  4. 单击结果对话框中的“添加”按钮。
  5. 对于新的访问规则,请将分辨率设置为“可访问”,将模式设置为"com/sun/xml/internal/**"
  6. 添加此访问规则后,您的项目应该在没有这些警告的情况下构建。

答案 1 :(得分:78)

优秀的答案已经提供现场here

请参阅以下摘要:

  1. 转到项目属性中的“构建路径”设置。
  2. 删除JRE系统库
  3. 加回来;选择“添加库”并选择JRE系统库。默认对我有效。

答案 2 :(得分:41)

不是一个真正的解决方案,但无论我在哪里看到建议的解决方案,只需告诉Eclipse这些不是错误。您可以转到属性 - >进行更改。 Java编译器 - >错误警告 - >弃用和重新编写的API - >禁止引用(访问规则),将其从错误更改为警告或忽略。

答案 3 :(得分:15)

我已通过以下步骤解决了这个问题:展开您的项目,右键单击" JRE系统库" >属性>选择第三个选项"工作区默认JRE" >好 。希望它也能帮到你

答案 4 :(得分:8)

在Eclipse中:
Project -> properties -> java Build Path -> libraries

删除现有的JRE系统库,然后删除Add Library -> JRE System library -> next -> ok

错误将被删除。

答案 5 :(得分:5)

当我的插件依赖于另一个项目时,我遇到了同样的问题,该项目在其清单文件中导出了一些包。我没有更改访问规则,而是通过在Export-Package部分添加所需的包来解决问题。这使得包装在法律上可见。 Eclipse实际上在“访问限制”错误标记上提供了此修复程序。

答案 6 :(得分:1)

在执行java程序的eclipse环境中,请执行以下步骤:

  1. 点击eclipse菜单栏上方的Project。
  2. 点击属性。
  3. 选择库,单击现有库,然后单击窗口右侧的“删除”。
  4. 重复此过程,现在单击“添加库”,然后选择“JRE系统库”并单击“确定”。

答案 7 :(得分:0)

我正在回答这个问题,因为我解决这个问题的方法不同于其他答案。当我重构我正在导出的插件的名称时,我遇到了这个问题。最终我必须确保修复/更改以下内容。

  1. 产品文件的依赖关系,
  2. plugin.xml依赖项(并确保不使用导入的包对话框隐式导入它)。
  3. 运行配置插件选项卡。运行方式 - >>运行配置 - >插件选项卡。取消选中旧插件,然后单击Add Required Plug-ins。
  4. 这对我有用,但你的里程可能会有所不同。

答案 8 :(得分:0)

我刚刚将项目方面更改为1.7并且工作正常。

答案 9 :(得分:-2)

转到构建路径删除现有JRE并添加包含Jdk1.6的新JRE库 并完成 现在清理所有项目并重新构建

我认为这样你可以解决你的错误