为什么对于OperatingSystemMxBean,访问仅限于jre6/lib/rt.jar?

Mis*_*Dai 16 java

我正在尝试在Eclipse中编译的一些Java代码遇到一些麻烦.我一直收到以下警告......

Access restriction: The type OperatingSystemMXBean is not accessible due to restriction on required library C:\Program Files\Java\jre6\lib\rt.jar
Run Code Online (Sandbox Code Playgroud)

从这行代码......

com.sun.management.OperatingSystemMXBean bean = (com.sun.management.OperatingSystemMXBean) java.lang.management.ManagementFactory.getOperatingSystemMXBean();
Run Code Online (Sandbox Code Playgroud)

我已经找到了解决方法,但我担心限制警告.这段代码适用于我的开源项目(CfTracker),如果我打算违反某种许可协议,我不想解决这个限制.任何人都可以帮我理解这个吗?

Zoh*_*aib 14

转到窗口 - >首选项 - > Java - >编译器 - >错误/警告.选择已弃用和受限制的API.将其更改为警告.更改禁止和气馁参考并将其更改为警告.(或根据您的需要.)

谢谢.


Thi*_*ilo 13

这不是许可协议的问题.只是Eclipse试图保护您不使用不属于官方JDK API的类(而是Oracle/Sun的JVM实现的一部分).

是否有特殊原因需要进行类转换(而不是使用"官方"接口java.lang.management.OperatingSystemMXBean)?

如果要确保在预期的MXBean不可用时继续运行应用程序,可以添加一些try/catch逻辑以正常处理ClassCastException.


小智 10

我找到的最佳解决方案是:

  • 转到项目属性中的"构建路径"设置.

  • 删除JRE系统库

  • 加回来; 选择"添加库"并选择JRE系统库.

/sf/answers/152222521/