既然 tools.jar 在 Java 9 中被分解了,sun.misc.Perf 移到哪里去了

Ale*_*ros 6 java java-9 java-module

sun.misc.Perftools.jar和在Java中这9取出并基于模块概念重组,因此,问题是你如何访问它在新的Java?我需要知道哪个模块现在包含此代码。

Nam*_*man 3

该实现已移至模块jdk.internal.perf内的包下java.base

顾名思义,该包尚未从模块中导出,因此如果您仍然想显式使用该包中的类,则可以使用 VM 选项:

--add-exports java.base/jdk.internal.perf=<your-module-name>
Run Code Online (Sandbox Code Playgroud)

但请注意,这是使用此类的不可靠方法,更好的解决方案始终是针对特定用例进行迁移,而不依赖于(内部)类sun.misc.*

  • 它太脆弱了,无法依赖未记录/不受支持的 JDK 内部 API。在本例中,进行了重构,将一些内部类移至 jdk.internal.ref。对于 sun.nio.cs,支持的 SPI 位于 java.nio.charsets.spi 中。 (4认同)