You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

执行mvn install报错:com.sun.net.ssl.internal.Provider依赖缺失版本配置

解决Maven install时com.sun.net.ssl.internal.Provider:tools:jar缺失版本的问题

这个问题其实很常见——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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 07:25:21