java-访问限制:由于对所需库.. \ jre \ lib \ rt.j的限制而无法访问
我正在尝试修改一些旧代码,而又得到以下错误:
访问限制:由于必需的库.. \ jre \ lib \ rt.jar的限制,无法访问标头类型的方法create(JAXBRIContext,Object)
对于这些导入语句:
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都不包含上述类的不同/旧版本。
任何人都可以告诉我该错误的全部原因以及如何解决此问题?
感谢您的事先帮助,
奥利
10个解决方案
125 votes
我遇到了类似的问题,我认为警告的原因是Eclipse试图劝阻您不要使用内部"com/sun/xml/internal/**"软件包,这些软件包是作为工作区JRE的一部分安装的,但不属于公共Java API的一部分。
就像Justin在回答中所说的那样,更改编译器设置会隐藏警告。 一种更细粒度的方法是修改您的构建路径,以明确允许访问有问题的软件包:
打开“ Java构建路径”项目属性窗口的“库”选项卡。
展开“ JRE系统库”条目。
选择“访问规则”,然后单击“编辑”按钮。
在出现的对话框中单击添加按钮。
对于新的访问规则,将分辨率设置为“可访问”,并将模式设置为"com/sun/xml/internal/**"。
添加此访问规则后,您的项目应在没有这些警告的情况下进行构建。
Alex answered 2019-09-21T04:03:55Z
78 votes
这里已经提供了很好的答案。
请参阅以下摘要:
转到项目属性中的“构建路径”设置。
删除JRE系统库
加回去; 选择“添加库”,然后选择JRE系统库。 默认为我工作。
Abimbola answered 2019-09-21T04:04:47Z
41 votes
这不是一个真正的解决方案,但是在我看来,所建议的解决方案都是简单地告诉Eclipse这些不是错误。 您可以通过以下方法来更改它:属性-> Java编译器->错误警告->已弃用和改写的API->禁止引用(访问规则),将其从错误更改为警告或忽略。
Justin answered 2019-09-21T04:05:12Z
15 votes
我已经通过以下步骤解决了这个问题:展开项目,右键单击“ JRE系统库”>“属性”,然后选择第三个选项“ Workspace default JRE”>“确定”。 希望它也能帮助您
Candra answered 2019-09-21T04:05:37Z
8 votes
在Eclipse中:
Add Library -> JRE System library -> next -> ok
删除现有的JRE系统库,然后删除Add Library -> JRE System library -> next -> ok
错误将被消除。
Bilal Ashraf answered 2019-09-21T04:06:21Z
5 votes
当我的插件依赖于另一个项目时,我遇到了同样的问题,该项目在其清单文件中导出了一些软件包。 我没有更改访问规则,而是设法通过将所需的软件包添加到其“导出软件包”部分中来解决该问题。 这使得软件包在法律上可见。 Eclipse实际上在“访问限制”错误标记上提供了此修复程序。
Val answered 2019-09-21T04:06:47Z
1 votes
在执行Java程序的Eclipse环境中,执行以下步骤:
在Eclipse菜单栏上方单击Project。
单击属性。
选择库,单击现有库,然后单击窗口右侧的“删除”。
重复该过程,现在单击添加库,然后选择JRE系统库,然后单击确定。
Leleji Godwin answered 2019-09-21T04:07:40Z
0 votes
我之所以要回答这个问题,是因为与其他答案相比,我有不同的解决方法。 当我重构要导出的插件的名称时遇到了这个问题。 最终,我必须确保修复/更改以下内容。
产品文件的依赖性,
plugin.xml依赖项(并确保未使用导入的包对话框隐式导入它)。
运行配置插件选项卡。 运行方式.->运行配置->插件选项卡。 取消选中旧的插件,然后单击“添加所需的插件”。
这对我有用,但是您的里程可能会有所不同。
Lucas answered 2019-09-21T04:08:31Z
0 votes
我只是将Project Facet更改为1.7,它才起作用。
Magno C answered 2019-09-21T04:08:56Z
-2 votes
转到构建路径
删除现有的JRE并添加包含Jdk1.6的新JRE库并完成现在清理所有项目并重新构建
我认为这样可以解决您的错误
DevArea answered 2019-09-21T04:09:36Z