`tools.jar` 是 JDK 8 及之前版本中用于编译和工具调用的核心库,位于 `$JAVA_HOME/lib/tools.jar`。JDK 9+ 已将其模块化移除。
报错通常是因为 IDE(Eclipse/STS/IDEA)或构建工具(Maven/Gradle)配置指向了 JRE 而非 JDK,或者环境变量 `JAVA_HOME` 指向错误。
方案一:IDE 配置修正(推荐,适用于 Eclipse/STS/IDEA)
确保 IDE 使用的运行时环境是完整的 JDK 而非 JRE。
- Eclipse / STS:
编辑安装目录下的 `eclipse.ini` 或 `SpringToolSuite4.ini`,在 `-vmargs` 之前添加以下两行(路径替换为本地 JDK 8 的实际路径):
C:/Program Files/Java/jdk1.8.0_xxx/bin/javaw.exe
- IntelliJ IDEA:
进入 `File` -> `Project Structure` -> `SDKs`,确保 SDK 路径指向 JDK 根目录(包含 `lib/tools.jar`),而非 JRE 目录。若使用 Maven,检查 `Settings` -> `Build, Execution, Deployment` -> `Build Tools` -> `Maven` -> `Importing` 中的 `JDK for importer` 是否设置为正确的 JDK。
方案二:Maven 项目依赖缺失修复
若报错为 `Missing artifact jdk.tools:jdk.tools:jar:1.8`,需在 `pom.xml` 中显式声明系统范围依赖。
<dependency>
<groupId>jdk.tools</groupId>
<artifactId>jdk.tools</artifactId>
<version>1.8</version>
<scope>system</scope>
<systemPath>${java.home}/../lib/tools.jar</systemPath>
</dependency>
```
*注意:`${java.home}` 通常指向 JRE,故使用 `../lib/tools.jar` 回溯到 JDK 的 lib 目录。确保 `JAVA_HOME` 环境变量指向 JDK 根目录。*
方案三:Gradle 构建环境指定
若 Gradle 报错找不到 `tools.jar`,需在用户主目录下的 `.gradle/gradle.properties` 文件中指定 JDK 路径。
org.gradle.java.home=C:/Program Files/Java/jdk1.8.0_xxx
方案四:文件缺失补救(仅当 JDK 安装损坏时)
若确认使用的是 JDK 8 但 `lib` 目录下确实缺少 `tools.jar`,可从同版本其他正常机器复制该文件至 `$JAVA_HOME/lib/` 目录下,或重新安装完整版的 Oracle JDK 8(避免使用精简版或仅包含 JRE 的安装包)。