Java 9中的JavaLangAccess和SharedSecrets

Cla*_*oft 9 java java-9

似乎在Java 9中删除了包中的SharedSecretsJavaLangAccesssun.misc.

Java 9中是否有替代这些类提供的功能?

Nam*_*man 5

上述两个类都打包在jdk.internal.misc包中.

您可以尝试访问它们的一种方法是使用该选项

--add-exports <source-module>/<package>=<target-module>(,<target-module>)*
Run Code Online (Sandbox Code Playgroud)

对于您的用例:

--add-exports java.base/jdk.internal.misc=your.module
Run Code Online (Sandbox Code Playgroud)

: - 免责声明来自 JEP-261:模块系统 -

--add-exports--add-opens选择必须非常小心使用.您可以使用它们来访问库模块的内部API,甚至是JDK本身的内部API,但这样做需要您自担风险:如果更改或删除了内部API,那么您的库或应用程序将失败.

  • 应强烈建议开发人员不要使用sun.*,jdk.internal.*和其他JDK内部API.所以我认为建议提交者移动使用内部共享秘密类的新位置并不是一个好主意. (6认同)
  • @VGR我相信他们可能会在将来的版本中被删除.添加了JEP的免责声明以指定. (3认同)
  • @AlanBateman我也是第二点,正如VGR已经指出的那样.因此也在答案中添加了注释.我刚刚建议*单向*如何实现这一目标,而不是将其定义为必须/应该遵循的方式.毫无疑问,我很乐意提出一个答案,可以反映上述课程的替代品及其功能的细节. (2认同)