Java 9中项目Jigsaw的主要目标之一是可靠的配置.也就是说,Java 9承诺解决类路径机制缺陷,它允许java启动程序运行程序,而不确保在运行时加载所有必需的类,这曾经导致java.lang.NoClassDefFoundErrors.
这是module-info.java通过在全新--module-path选项中声明模块依赖性来完成的.在启动Java应用程序之前分析模块图.
但是,我仍然可以做到以下几点.
com.spacey.explorer和com.spacey.rocket. com.spacey.explorer使用com.spacey.rocket.RocketZ由com.spacey.rocket模块定义和导出的类.编译和JARing两个模块后,一切正常运行.com.spacey.rocket.RocketZ从com.spacey.rocket模块中删除类型并重新编译并重新JAR只有这一个模块.com.spacey.explorer使用新编译的com.spacey.rocket模块运行以前编译的模块.java.lang.NoClassDefFoundError,这可能是在4小时的应用程序正常运行时间之后.有没有办法真正确保在运行Java应用程序时不仅验证了模块图(模块路径)的完整性,而且还完成了对实际类型可访问性的全面检查?
有没有办法真正确保在运行Java应用程序时不仅验证了模块图(模块路径)的完整性,而且还完成了对实际类型可访问性的全面检查?
不在JVM中,没有.该模块系统运行在伪像的级别,是幸福的,如果一个神器自称是正确的模块存在.除此之外,不再进行进一步的检查.
也就是说,JDeps应该能够帮助你.它分析您的项目及其依赖项,并在各个类的级别上运行.它将指出无法找到的依赖项.
在你的例子中:
$ jdeps -R --module-path jars-dir -m com.spacey.explorer
> com.spacey.explorer -> com.spacey.rocket not found
Run Code Online (Sandbox Code Playgroud)