VSCode的Remote WSL扩展可以让WSL2在终端中通过code指令启动Windows侧的VSCode,且体验与原生Linux基本无二;
但是进一步使用后发现Remote WSL配合Language Support for Java by Red Hat(以下称JAVA语法支持)并不能正常解析WSL2中的java源代码;通过查询JAVA语法支持扩展的介绍可知,这是由于WSL2环境中缺少JDK11或更高的环境支持;
以Ubuntu分发版为例,安装OpenJDK11即可:
sudo apt install openjdk-11-jdk
然后查找到java可执行文件的路径:
#先确认java可执行文件的直接路径
ryan /mnt/d $ which java
/usr/bin/java
#查看该路径,发现是软连接
ryan /mnt/d $ ls -al /usr/bin/java
lrwxrwxrwx 1 root root 22 Jun 24 10:56 /usr/bin/java -> /etc/alternatives/java
#进一步追踪,知道发现真正存放文件的路径
ryan /mnt/d $ ls -al /etc/alternatives/java
lrwxrwxrwx 1 root root 43 Jun 24 10:56 /etc/alternatives/java -> /usr/lib/jvm/java-11-openjdk-amd64/bin/java
#这就是java可执行文件真正存放的地址
ryan /mnt/d $ ls -al /usr/lib/jvm/java-11-openjdk-amd64/bin/java
-rwxr-xr-x 1 root root 14560 Apr 21 17:15 /usr/lib/jvm/java-11-openjdk-amd64/bin/java
找到JDK的路径以后,有两种办法可以配置:
- 设置JDK_HOME/JAVA_HOME环境变量;
- 设置VSCode中Remote-WSL的settings.json;
前者比较简单,就不赘述了;
后者可能更适合某些复杂环境的开发(比如需要多个JDK版本切换的),因此着重介绍下第二种方式:
- 打开VSCode
菜单中选择:File -> Preferences -> Settings
- 弹出的设置界面中选择Remote选项卡,在Extensions -> JAVA中随意找到一个可以点击的Edit in settings.json连接,点击进入settings.json的编辑界面:
- 插入如下代码:
"java.configuration.runtimes": [
{
"name": "JavaSE-11",
"path": "/usr/lib/jvm/java-11-openjdk-amd64/",//这个就是刚才查找的OpenJDK11的路径
"default": true
},
],
完成后效果实例如图:
- 重启VSCode即可生效;