sublime Text 通过配置 jdtls 语言服务器可实现接近 IntelliJ 的 java 开发体验:需安装 JDK 17+、下载并配置 jdtls、在 LSP 插件中正确关联,再生成项目配置(如 .project/.classpath)以支持依赖跳转和 maven/gradle 项目。

sublime text 本身不是 Java ide,但通过合理配置 LSP(Language Server Protocol)插件,完全可以实现接近 IntelliJ 的基础开发体验:实时语法检查、精准代码补全、跳转定义、查看文档、错误高亮等。关键不在“装得多”,而在选对语言服务器和配好客户端。
安装并配置 Java 语言服务器(jdtls)
jdtls 是 eclipse 官方维护的 Java 语言服务器,稳定、功能全、兼容 JDK 11+,是 Sublime 下 Java LSP 的首选。
- 从 https://github.com/eclipse-jdtls/jdtls 下载对应系统的预编译包(如
jdt-language-server-0.79.0.tar.gz),解压到固定路径(例如~/jdtls) - 确保系统已安装 JDK 17 或更高版本(jdtls 0.79+ 要求 JDK 17+),并在终端中运行
java -version验证 - 创建启动脚本(如
~/jdtls/bin/start.sh),内容如下:
#!/bin/bash exec java -Declipse.application=org.eclipse.jdt.ls.core.id1 -Dosgi.bundles.defaultStartLevel=4 -Declipse.product=org.eclipse.jdt.ls.core.product -Dfile.encoding=UTF-8 -noverify -Xmx1G -jar ~/jdtls/plugins/org.eclipse.equinox.launcher_*.jar -configuration ~/jdtls/config_mac -data ~/jdtls/workspace
注意把 config_mac 替换为 config_linux 或 config_win,路径需真实存在(首次运行会自动初始化)。
安装 LSP 插件并关联 jdtls
在 Sublime Text 中使用 Package Control 安装 LSP 插件(非 LSP-complete 或旧版)。
立即学习“Java免费学习笔记(深入)”;
- 打开 Preferences → Package Settings → LSP → Settings
- 在右侧用户设置中添加 Java 配置块:
"clients": { "jdtls": { "command": ["~/jdtls/bin/start.sh"], "enabled": true, "languageId": "java", "scopes": ["source.java"], "syntaxes": ["Packages/Java/Java.sublime-syntax"], "initializationOptions": { "bundles": [] } } }
保存后重启 Sublime,打开一个 .java 文件,状态栏左下角若显示 “LSP-jdtls active”,说明连接成功。
让 LSP 真正“懂”你的项目
LSP 默认只识别单文件,要支持 Maven/Gradle 项目、依赖跳转、模块路径,必须生成项目配置。
- 在项目根目录运行
mvn compile(Maven)或./gradlew classes(Gradle),确保能正常构建 - 用
mvn org.apache.maven.plugins:maven-dependency-plugin:copy-dependencies -DoutputDirectory=target/lib等方式确保依赖可被扫描(jdtls 会自动读取pom.xml或build.gradle) - 推荐在项目根目录放一个
.project和.classpath(可由 Eclipse 导出,或用mvn eclipse:eclipse生成),jdtls 会优先识别它们
完成后,Ctrl+Click 可跳转到 JDK 或第三方类源码,Hover 显示 Javadoc,错误实时标红——和 IDE 基本一致。
增强体验的小技巧
默认 LSP 补全不触发 import 自动添加,可以加个快捷键快速优化导入:
- 在 Preferences → Key Bindings 中添加:
[ { "keys": ["ctrl+shift+o"], "command": "lsp_execute_command", "args": {"command_name": "java.action.organizeImports"} } ]
其他实用命令(可在 Command Palette 搜索执行):java.action.cleanUp(格式化+整理)、java.action.generateGetterSetter(快速生成 getter/setter)、java.action.addSingleImport(手动补全 import)。
基本上就这些。不用装臃肿 IDE,也能拥有响应快、低资源、高可用的 Java 编程环境。重点是 jdtls 版本别太老、JDK 版本要匹配、项目结构得规范——不复杂但容易忽略。