SSH远程开发时VSCode执行命令报Invalid string length错误如何解决
错误原因
- VSCode远程服务端中Java语言服务的工作区缓存损坏,执行清理命令时读取损坏的缓存数据触发长度校验报错
- 工作区内存在未被排除的超大文本/二进制文件(GB级以上的日志、Dump文件、构建产物等),Java语言服务扫描索引时加载的内容超过Node.js运行环境的字符串最大长度限制
- 本地安装的Java语言支持插件版本与远程SSH服务端的VSCode版本不兼容,执行命令时参数传递异常
解决方案
- 手动清理Java语言服务缓存
不需要通过VSCode命令执行清理,直接访问对应路径删除缓存目录即可:- 远程主机端缓存路径:
~/.vscode-server/data/User/workspaceStorage/,找到对应当前工作区的子目录,删除其中的redhat.java文件夹 - 本地VSCode缓存路径(可选):Windows系统为
%APPDATA%\Code\User\workspaceStorage\,Mac系统为~/Library/Application Support/Code/User/workspaceStorage/,Linux系统为~/.config/Code/User/workspaceStorage/,同样删除对应工作区下的redhat.java文件夹
- 远程主机端缓存路径:
- 排除工作区超大文件
在工作区的.vscode/settings.json中添加配置,禁止Java插件扫描不需要的超大文件/目录,示例配置如下:
可根据自己工作区的实际文件情况调整排除规则{ "files.exclude": { "**/*.log": true, "**/dump_*": true, "**/build": true, "**/target": true }, "java.excludedPaths": [ "**/*.log", "**/temp", "**/large_files", "**/node_modules" ] } - 调整Java语言支持插件版本
如果你当前使用的是插件预览版,切换到稳定版即可;如果是最新稳定版触发报错,可以回退到上一个可用的历史稳定版,重新连接SSH后插件会自动同步到远程服务端 - 重置远程VSCode服务端(极端情况)
如果以上操作都无效,可以直接删除远程主机上的整个~/.vscode-server目录,断开SSH连接后重新连接,VSCode会自动重新部署完整的远程服务端,所有缓存问题都会被清理
内容的提问来源于stack exchange,提问作者Jingcheng KOU
相关产品推荐
相关产品推荐

