帮同事跑一个内部工具,双击 jar 没反应,命令行敲 java -jar 提示找不到命令,一看机器上根本没装 Java 环境。要装什么,先得分清 java runtime environment 和 JDK 各管什么。

JRE 负责运行,JDK 负责开发

java runtime environment 直译是 Java 运行时环境,缩写 JRE,里面装着 JVM 和核心类库,任务只有一个:让编译好的程序跑起来。JDK 则是在运行环境的基础上多了编译器和调试工具,面向写代码的人。

所以选型很简单:只是运行别人发来的 jar 包,JRE 够用;要自己写代码、用 javac 编译,必须装 JDK。装 JDK 其实也覆盖了运行功能,很多人干脆一步到位。

一个要留意的现状

Java 8 之后的版本,Oracle 不再单独提供面向普通用户的 JRE 安装包,官网主要分发 JDK,OpenJDK 这类开源发行版同样只给 JDK。因此现在说装 JRE,实际操作通常就是装一个 JDK,运行命令 java 就包含在里面。

装完怎么验证

命令行敲 java -version,能输出 17.0.x、21.0.x 这类版本号说明运行环境可用;再敲 javac -version,输出版本号说明 JDK 也在。两个命令都通,开发和运行都不愁。

报错对照着查

  • 找不到 java 命令:PATH 里没有 Java 的 bin 目录,改完重开终端
  • Error: could not create the Java Virtual Machine:内存参数给大了,检查 -Xmx 设置
  • UnsupportedClassVersionError:程序用新版编译,本机运行环境太旧,升级或换版本

实际判断:新机器直接装 JDK 17 或 21 这类长期支持版,一步到位;老项目报版本错误时,先看程序要求哪个大版本,再决定换环境还是给编译加目标版本参数。