Sublime 能否运行 Java 完全取决于系统中 javac 和 java 命令是否可用;必须先在终端成功执行 javac -version 和 java -version,否则所有配置均无效。

Sublime 能否运行 Java,完全取决于系统里 javac 和 java 命令是否可用——它不自带 JDK,也不读 IDE 级配置,只认终端能直接执行的命令。跳过验证这一步,后面所有配置都白搭。
javac -version 和 java -version 必须同时成功
这是最常被跳过的前置检查。打开终端(macOS/Linux)或 PowerShell(Windows),执行:
javac -version java -version
两个命令都必须输出类似 javac 17.0.1 或 java version "17.0.1" 的结果。常见失败情况:
-
javac报 command not found / 'javac' is not recognized → JDK 没装,或JAVA_HOME和PATH没配对 -
java -version成功但javac -version失败 → 只装了 JRE,不是 JDK;需重装完整 JDK(如 Eclipse Temurin) - Windows 用户特别注意:
JAVA_HOME必须指向 JDK 根目录(如C:Program FilesJavajdk-17.0.1),且%JAVA_HOME%in必须在PATH中 - 改完环境变量后,必须彻底退出 Sublime(杀进程,不只是关窗口),否则它不会加载新变量
Build System 必须用 -d . 支持 package 结构
默认的 Java 构建系统只编译单文件,一旦源码含 package com.example;,就会报 cannot find symbol 或 Could not find or load main class。核心是让 javac 按包名生成目录结构,并让 java 能定位到类。
立即学习“Java免费学习笔记(深入)”;
- 编译命令中必须包含
-d .:例如["javac", "-encoding", "UTF-8", "-d", ".", "$file"] -
-d .的作用是:根据package声明自动创建子目录(如com/example/),把.class放进去 - 不加
-d .,javac会把.class全扔进当前目录,java运行时找不到对应包路径 - 如果项目有资源文件或依赖其他
.class,还需加-cp .或显式指定类路径
working_dir 必须设为 $file_path
Sublime 默认工作目录不一定是你的 Java 文件所在目录,导致 java 找不到刚编译出的 .class,或 import 的类、读取的文件路径出错。
- 务必在构建系统 JSON 中加入:
"working_dir": "$file_path" - 这个值会让编译和运行都在源文件所在目录下执行,避免路径错位
- 不要写死成固定路径(如
"working_dir": "/home/user/project"),否则换项目就失效 - Windows 用户注意:路径中反斜杠要双写(
C:\Program Files\Java\...)或统一用正斜杠(Sublime 支持)
中文乱码和多 JDK 版本的处理要点
中文字符输出为问号、或编译时报“非法字符”,大概率是编码没对齐;而机器上装了多个 JDK 时,容易调错版本。
- 必须加
-encoding UTF-8参数:javac和源文件编码一致,否则注释、字符串全乱 - 不要依赖系统默认编码,显式指定比靠环境变量更可靠
- 多 JDK 场景下,建议在构建系统里写死路径(如
/opt/homebrew/opt/openjdk@17/bin/javac),用which javac或Get-Command javac查真实位置 - 不同 JDK 版本对语法支持不同(如 records、pattern matching),编译失败时先确认
javac -version输出的确实是你要用的那个
真正卡住人的地方,往往不是 JSON 写错,而是 javac 命令本身在终端就跑不通,或者 working_dir 和 -d . 没配合好——这两个点一错,错误信息看起来像语法问题,实际是路径或结构问题。


















