首先参考官方文档的解释
Note: The Java language server requires JDK version 11 or above to launch it self, but this is NOT a requirement to your projects’ runtime. Check Settings for the JDK for more information about how to set the JDK for the extension itself.
即这里需要的JDK11以上的原因是因为Java language Server需要JDK11以上。但是需要注意的是官方文档同样提示
Note: The Java language server requires JDK version 11 or above to launch it self, but this is NOT a requirement to your projects’ runtime. Check Settings for the JDK for more information about how to set the JDK for the extension itself.
也就是这里配置了jdk11以后,并不是说我们的项目运行就必须用JDK11,项目运行的JDK版本可以是任意版本。
假设我的项目使用jdk1.8运行的,那么我需要安装两个版本的JDK,
/Library/Java/JavaVirtualMachines ls jdk1.8.0_301.jdk temurin-17.jdk
一个是17,一个是1.8。JavaHome配置的是17
~/repo: java -version openjdk version "17.0.1" 2021-10-19 OpenJDK Runtime Environment Temurin-17.0.1+12 (build 17.0.1+12) OpenJDK 64-Bit Server VM Temurin-17.0.1+12 (build 17.0.1+12, mixed mode, sharing)
然后在VScode的settings.json文件中添加了如下配置,用jdk1.8启动我的项目
...
"java.configuration.runtimes": [
{
"name": "JavaSE-1.8",
"path": "/Library/Java/JavaVirtualMachines/jdk1.8.0_301.jdk/Contents/Home/",
"default": true
},
],
...
这个时候在vscode里运行一个java项目
~/hack/study/deserialization/java_deserialization cd /Users/hack/study/deserialization/java_deserialization ; /usr/bin/env /Library/Java/JavaVirtualMachines/jdk1.8.0_301.jdk/Contents/Home/bin/java -cp "/Users/Library/Application Support/Code/User/workspaceStorage/24904bc37da38d0fba2891f500876dd4/redhat.java/jdt_ws/java_deserialization_a0750083/bin" QuickStart Hello, World.
可以看到实际上使用jdk1.8运行的



