在eclipse中使用jdk9或以上版本引用类时出现 The type xxx is not accessible 错误

参考文档:https://www.cnblogs.com/IcanFixIt/p/7144366.html

在使用 eclipse (支持 jdk9 及以后版本的 eclipse)引入 sun.net 包时,会出现编译错误,提示 “The type xxx is not accessible” 的错误信息。

在网上搜索了很多的文章,都是提示在 Properties 对话框中修改 "JRE System Library" 的 "Access rules" 来实现。这里描述一下网上资料中描写的操作过程。在Properties 对话框中左侧选择 "Java Build Path" 项目,在右侧的 Libraries 页签中选择 "JRE System Library",展开折叠,选择 "Access rules" 项添加操作规则。在 “Add Access Rule” 对话框中,Resolution 选择 "Accessible",在 Rule Pattern 中输入 sun.net.www.protocol.http/**,再选择 OK 按钮确认配置。

同时设置 Properties 对话框中的 Java Compiler-->Errors/Warnings 中,将 Deprecated and restricted API 中所有的告警方式改为 "Warning"。

这种方法我在 eclipse 中测试了是没有效果的,编译仍然报同样的错误。

通过不断尝试,探索出了可以解决这个问题的方法。解决这个问题也是需要通过 Properties 界面中的 “Expose Package” 的设置实现。

首先需要确定编译报错的 import 类属于 jdk 模块中的哪个包?如下图:

上图中引入的三个类分别属于:

sun.net.www.HeaderParser 属性 sun.net.www 包

sun.net.www.protocol.http.AuthScheme 和 sun.net.www.protocol.http.AuthenticationInfo 同属于 sun.net.www.protocol.http 包。

因此在操作时需要对这两个包执行 Expose Package 操作。

按上面的图示打开 Add-exports configuration 对话框,根据前面找到的包路径,在 Package 栏中输入包路径,在 Target module 中输入目标模块名,设置为未命名模块 "ALL-UNNAMED",这样在类中就能直接访问和导入这些模块了。

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值