运行 Java 类依赖关系分析器工具 (JDeps)

从 Java 8 开始, JDK 提供名为 jdeps (Java 类依赖关系分析器) 的命令行实用程序。 jdeps 命令将分析类依赖关系并提供额外的参数来标记内部 JDK 包。 虽然 WebSphere 迁移工具也可以标记在应用程序中找到的大多数迁移问题,但是 jdeps 工具可以另外检测在迁移到新的 Java 版本后不再可用的内部 JDK 包。

建议在解决了由二进制或源 WebSphere 迁移工具标记的问题后,运行 jdeps 命令作为最后一步。 针对应用程序 Java 工件运行 jdeps 命令。 要确保结果准确,请将计划的目标 JDK 安装 (例如 JDK 11) 中提供的 jdeps 命令与 -jdkinternals 参数配合使用。 例如,在将环境设置为使用 Java 11 后,请运行以下命令:

jdeps -jdkinternals C:\demo\Apps\myapplication.jar

从 Java 9 开始,开始限制对大多数 JDK 内部的访问。 但是,为了帮助迁移,对于 Java 8 中存在的 API ,缺省情况下已关闭此强封装。 从 Java 16 开始, -- 非法访问 启动程序选项的缺省值设置为 拒绝 而不是 许可。 虽然不建议这样做,但在 Java 16 中,可以通过指定 -- illegal-access=行允许来绕过此限制。 -- 非法访问 也可以设置为 warndebug ,以便与 许可具有相同的效果,但在使用 warn 时发出警告消息,并在使用 debug时对非法的反射访问操作进行堆栈跟踪。

迁移到 Java 17 或更高版本时, -- 非法访问 启动程序选项已过时。 大多数 JDK 内部现已被强力封装。 虽然不推荐使用,但可以使用 -- add-open 启动程序选项或 Add-open 来绕过此限制 JAR 清单属性,用于打开应用程序或第三方库所需的特定包。

此更改未封装的特定关键内部 API 包括以下项:

该实用程序将生成输出来标识对 JDK 内部类的引用,并尽可能提供建议的替换 API。 注:jdeps 命令仅接受 .class 文件、目录或 JAR 文件。

有关 jdeps 命令的更多信息,请参阅 jdeps 参考页面