Java LSP 配置指南
概述
OpenCode 已配置支持 Java Language Server Protocol (LSP),使用 Eclipse JDT.LS 作为 Java 语言服务器。
当前配置
系统要求
- ✅ Java SDK: OpenJDK 21.0.5
- ✅ OpenCode CLI: v1.0.152
- ✅ 项目包含大量 Java 文件
配置文件
.opencode/opencode.json 已配置启用 jdtls LSP 服务器:
{
"$schema": "https://opencode.ai/config.json",
"share": "disabled",
"lsp": {
"jdtls": {
"disabled": false,
"extensions": [".java"],
"initialization": {
"settings": {
"java": {
"configuration": {
"updateBuildConfiguration": "interactive"
},
"format": {
"enabled": true
},
"completion": {
"favoriteStaticMembers": [
"org.junit.Assert.*",
"org.junit.jupiter.api.Assertions.*",
"org.mockito.Mockito.*"
]
}
}
}
}
}
}
}
功能特性
1. 代码补全
- 方法参数提示
- 变量自动补全
- 类型推断补全
2. 诊断功能
- 实时错误检测
- 编译错误提示
- 语法高亮错误
- 代码警告
3. 代码导航
- 跳转到定义 (Go to Definition)
- 查找引用 (Find References)
- 查看实现 (Find Implementations)
4. 代码操作
- 快速修复 (Quick Fix)
- 重构操作
- 导入优化
- 代码格式化
5. 其他功能
- 代码大纲 (Code Outline)
- Javadoc 悬停提示
- 代码透镜 (Code Lens)
- 符号搜索
使用方法
启动 OpenCode
# 在项目根目录运行
opencode
使用 LSP 功能
当你在 OpenCode 中打开 Java 文件时,LSP 服务器会自动启动:
# 打开 OpenCode 后
opencode
# 在 TUI 中导航到 Java 文件
# LSP 会自动启动并提供智能提示
测试 LSP 配置
运行测试脚本验证配置:
bash scripts/test-java-lsp.sh
常用命令
在 OpenCode TUI 中
Ctrl+P- 打开文件Ctrl+Shift+P- 命令面板F12- 跳转到定义Shift+F12- 查找引用Ctrl+Space- 代码补全Ctrl+Shift+F- 格式化代码
CLI 使用
# 让 OpenCode 分析特定 Java 文件
opencode run "Review the code in src/main/java/MyClass.java for any issues"
# 让 OpenCode 带着上下理解代码
opencode
# 然后在 TUI 中打开 Java 文件,LSP 会提供代码上下文
配置选项
自定义 LSP 设置
编辑 .opencode/opencode.json:
{
"lsp": {
"jdtls": {
"initialization": {
"settings": {
"java": {
"configuration": {
"updateBuildConfiguration": "automatic", // automatic|interactive|disabled
"maven": {
"downloadSources": true,
"updateSnapshots": true
}
},
"format": {
"enabled": true,
"profile": "GoogleStyle" // 或其他格式配置
},
"saveActions": {
"organizeImports": true
}
}
}
}
}
}
}
禁用特定 LSP
如果需要禁用 Java LSP:
{
"lsp": {
"jdtls": {
"disabled": true
}
}
}
禁用所有 LSP
{
"lsp": false
}
与 AI 协作的示例
1. 代码审查
# 先让 LSP 识别代码问题
# 然后:
opencode run "Review the errors and warnings reported by LSP in src/main/java/MyService.java and suggest fixes"
2. 重构建议
opencode run "Analyze the code structure of src/main/java/MyController.java and suggest refactoring improvements"
3. 测试生成
opencode run "Generate unit tests for src/main/java/com/example/Calculator.java using JUnit 5"
故障排除
LSP 未启动
-
检查 Java 版本:
java -version # 需要 21+ -
确认配置文件:
cat .opencode/opencode.json -
查看日志:
opencode --print-logs
缓存问题
如果遇到缓存问题,可以:
# 删除 OpenCode 缓存
rm -rf ~/.opencode/cache
# 或删除项目特定的 LSP 缓存
rm -rf .opencode/lsp
禁用自动下载
如果不想 OpenCode 自动下载 LSP 服务器:
export OPENCODE_DISABLE_LSP_DOWNLOAD=true
性能优化
对于大型项目
- 减少索引范围
- 禁用不必要的功能
- 调整内存设置
{
"lsp": {
"jdtls": {
"initialization": {
"settings": {
"java": {
"maxConcurrentBuilds": 2,
"autobuild": {
"enabled": false
}
}
}
}
}
}
}
相关资源
高级用法
添加自定义 LSP 服务器
{
"lsp": {
"my-custom-lsp": {
"command": ["my-lsp-server", "--stdio"],
"extensions": [".mylang"],
"initialization": {
"customOptions": {}
}
}
}
}
环境变量
可以在 LSP 启动时设置环境变量:
{
"lsp": {
"jdtls": {
"env": {
"JAVA_HOME": "/path/to/java",
"MAVEN_OPTS": "-Xmx2g"
}
}
}
}
最佳实践
- 保持 Java 版本更新 - 使用最新的 LTS 版本(21+)
- 定期清理缓存 - 对于大型项目
- 合理配置内存 - 根据项目大小调整
- 利用 LSP 诊断 - 在提交代码前修复 LSP 报告的问题
- 结合 AI 使用 - 让 OpenCode 理解 LSP 提供的上下文
总结
Java LSP 已在项目中正确配置并启用。通过结合 OpenCode 的 AI 能力和 JDT.LS 的代码理解能力,你可以:
- 获得更准确的代码分析
- 更快的代码补全
- 更智能的重构建议
- 更好的错误诊断
开始使用:
opencode
在 TUI 中打开任意 Java 文件,LSP 将自动激活!