gpt4 book ai didi

java - 为什么此代码可以编译,但会出现运行时 ClassNotFoundException?

转载 作者:行者123 更新时间:2023-11-29 07:10:39 24 4
gpt4 key购买 nike

我有一些使用专有 sun.*.OperatingSystemMXBean 的代码,所以我对它非常小心。

try {
_osBean = (com.sun.management.OperatingSystemMXBean) java.lang.management.ManagementFactory.getOperatingSystemMXBean();
}
catch (ClassCastException e) {
_osBean = null;
}

但是,当此代码在 IBM JVM 上运行时,我得到的不是 ClassCastException,而是运行时 ClassNotFoundException。如果该类不可用,为什么这段代码能够正常编译?JVM 如何影响这样的事情?

最佳答案

com.sun.* 包是 sun 为 sun JVM(热点)编写的私有(private)类,不是公共(public) API(即使您的代码证明它们是可访问的)。IBM JVM 是一个完全不同的实现并且没有它们(因为它们不是任何 java/jvm 规范的一部分)。
我猜它编译得很好,因为你是用 sun/oracle JDK 编译的
要尝试解决问题,请尝试转换到

java.lang.management.OperatingSystemMXBean

改为(这是一个公共(public) API),看看它是否适合您

关于java - 为什么此代码可以编译,但会出现运行时 ClassNotFoundException?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14161944/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com