执行mvn install报错:com.sun.net.ssl.internal.Provider依赖缺失版本配置
这个问题其实很常见——com.sun.net.ssl.internal.Provider是JDK自带的内部API类,它并不是一个可以从公开Maven仓库获取的依赖,所以Maven会提示找不到版本信息。下面是具体的解决步骤:
移除不必要的依赖
先检查你的pom.xml,看看是不是误引入了这个com.sun.net.ssl.internal.Provider相关的依赖。如果是,直接删掉这部分配置就好,因为JDK的运行时环境已经包含了这个类,不需要额外引入。如果确实需要依赖tools.jar(仅针对JDK 8及以下)
有些老项目可能会用到JDK的tools.jar,这时候可以通过系统依赖的方式配置,而不是从仓库拉取。在pom.xml里添加如下配置:<dependency> <groupId>com.sun</groupId> <artifactId>tools</artifactId> <version>${java.version}</version> <scope>system</scope> <systemPath>${java.home}/../lib/tools.jar</systemPath> </dependency>这里的
${java.version}是Maven内置变量,会自动匹配你当前使用的JDK版本;${java.home}指向JRE目录,../lib/tools.jar就是JDK安装目录下的tools.jar路径。针对JDK 9及以上版本的特殊处理
JDK 9开始采用模块化系统,tools.jar已经被移除,相关类被整合到java.base等模块中。如果你的项目基于JDK 9+,不需要再配置tools.jar依赖,只需要确保编译时正确引入对应的模块即可。如果遇到相关类找不到的问题,可以在Maven编译插件中添加模块参数:<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.8.1</version> <configuration> <release>11</release> <!-- 替换为你的JDK版本 --> <compilerArgs> <arg>--add-modules</arg> <arg>java.base</arg> </compilerArgs> </configuration> </plugin>
最后提醒一句:尽量避免依赖Sun/Oracle的内部API(比如com.sun.*开头的类),这些API不属于JDK的标准公开API,在未来的JDK版本中可能会被移除或修改,容易导致兼容性问题。
内容的提问来源于stack exchange,提问作者Suryalakshminarayana Dhulipudi

