默认情况下,Java/SQL模块不能从自动模块中解析出来的原因是因为Java平台的模块系统(Java Platform Module System,JPMS)要求模块之间的依赖关系必须通过显式声明来建立,而自动模块是指没有module-info.java文件的JAR文件。自动模块是为了兼容旧的非模块化的代码而引入的,它们的模块名称是根据JAR文件的文件名推断出来的。
由于自动模块没有显式声明依赖关系,因此默认情况下无法解析Java/SQL模块。为了解决这个问题,可以通过在模块路径中添加包含Java/SQL模块的JAR文件或者模块路径中添加包含Java/SQL模块的目录来使其可解析。
除了Java/SQL模块,还有一些其他的系统模块默认情况下也不能解析,例如java.se.ee模块。这是因为Java SE平台的模块系统将Java SE和Java EE分为两个不同的平台模块集合,Java SE模块集合中不包含Java EE模块。如果需要使用Java EE模块,可以通过在模块路径中添加包含Java EE模块的JAR文件或者模块路径中添加包含Java EE模块的目录来使其可解析。
需要注意的是,以上解释是基于Java 9及以上版本的模块系统。在Java 8及之前的版本中是没有模块系统的概念的。
领取专属 10元无门槛券
手把手带您无忧上云