用了一段時間VSCode,覺得還可以,想用VSCode整合不同的開發語言,於是研究了一下利用VSCode搭建Java環境、開發Java程序。網上這方面的帖子有不少,但每人的經歷不同,把自己的經歷記下來吧。
先附上官網鏈接,官網上也對在VSCode中如何使用開發Java程序進行了說明
https://code.visualstudio.com/docs/languages/java
VSCode能開發不同的語言靠的就是眾多插件了,先下載開發Java程序用的插件,官網上推薦的插件有四個:
1. Language Support for Java(TM) by Red Hat
對於開發簡單的Java程序,只需要前兩個就可以了,但需要自己再手動構建幾個配置文件(.classpath .project等),否則一些像導入、自動補全等有用的功能不能使用,只能檢查語法錯誤。第三個用於支持JUnit單元測試,第四個用於支持Maven創建Java的項目。
安裝完插件之后,打開“文件”-“首選項”-“設置”,進行參數設置,配置java和maven的路徑,如下所示,配置完成就可以進行Java開發了。
"java.home": "C:\\Program Files\\Java\\jdk1.8.0_172", //配置該項就可以進行java開發了,下面的配置都是支持maven使用的 "maven.executable.path": "C:\\Program Files\\maven-3.5.4\\bin\\mvn", "java.configuration.maven.userSettings": "C:\\Program Files\\maven-3.5.4\\conf\\settings.xml", "maven.terminal.customEnv": [ { "environmentVariable": "JAVA_HOME", "value": "C:\\Program Files\\Java\\jdk1.8.0_172" } ]
先介紹一下VSCode搭建基礎的Java運行環境,不使用Maven,再介紹用Maven創建Java項目,並在VSCode中開發。
一、VSCode進行基礎的Java程序開發,不使用Maven
若開發的Java程序簡單,可以不創建項目,只單獨開發幾個Java程序;也可以手動創建幾個配置文件,構造一個項目
1. 不創建項目,只開發幾個Java小程序
(1)先創建個文件夾做工作區
(2)用VSCode打開文件夾,編輯Java代碼:JavaTest.java和Peaple.java。
(3)編譯完成后,按下F5准備調試,這時在文件夾內會生成.vscode文件夾,里面生成launch.json文件,並自動打開。在launch.json文件中修改配置項mainClass,如下圖所示。如果調試不同的程序,mainClass每次都要修改,有點繁瑣。
(4)修改完成后,再按下F5進行調試,運行成功。
(5)上面代碼是測試時,發現過個問題,比如剛剛的打開VSCode后,馬上按F5調試JavaTest.java程序,這是VSCode會報Build failed, do you want to continue?,選擇Proceed之后,還會報找不到Peaple類。
但是如果在運行JavaTest.java之前,先點開Peaple.java類,讓VSCode有這么一個類,再運行JavaTest.java時,就不會報上述兩個問題。
Build failed, do you want to continue?問題有時會經常出現,看歪果仁也遇到類似問題,不知是不是bug。
Building Java project shows error: "Build failed, do you want to continue?":https://github.com/redhat-developer/vscode-java/issues/495
(6)由於上面代碼只是單獨兩個文件,VSCode會在右下角進行如下提示: Classpath is incomplete. Only syntax errors will be reported
我們點開“More Information”看一下,官方給我們的解釋是,由於這些文件不屬於任何一個項目,VSCode-java無法獲得classpath,於是無法報告編譯錯誤,但是還是可以報告語法錯誤、代碼導航等。這個提示每次都會提示,不希望提示的話可以選“Don't Show Again”。如果想避免這個問題,代碼的文件夾里要包含pom.xml(maven配置文件)或build.gradle(gradle配置文件)或eclipse的默認設置。
2. 手動創建Java項目
(1) 創建一個空文件夾作工作區,在工作區里再創建src和target文件,作為源和目的的文件夾
(2)官方提供的Language support for java是通過Eclipse ™ JDT Language Server,Buildship來啟動一個服務監聽並編譯源代碼,這里我們需要手動創建兩個文件來配置該編譯服務的相關項:.project和.classpath文件
.procject文件內容:
<?xml version="1.0" encoding="UTF-8"?> <projectDescription> <name>JavaTest2</name> <comment>Project testjava created by Buildship.</comment> <projects> </projects> <buildSpec> <buildCommand> <name>org.eclipse.jdt.core.javabuilder</name> <arguments> </arguments> </buildCommand> <buildCommand> <name>org.eclipse.buildship.core.gradleprojectbuilder</name> <arguments> </arguments> </buildCommand> </buildSpec> <natures> <nature>org.eclipse.jdt.core.javanature</nature> <nature>org.eclipse.buildship.core.gradleprojectnature</nature> </natures> </projectDescription>
.classpath文件內容
<?xml version="1.0" encoding="UTF-8"?> <classpath> <classpathentry kind="src" path="src"/> <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8/"/> <classpathentry kind="con" path="org.eclipse.buildship.core.gradleclasspathcontainer"/> <classpathentry kind="output" path="target"/> </classpath>
第一個.project文件,vscode會識別該項目為eclipse項目,第二個文件.classpath配置了源碼目錄以及編譯輸出目錄等,對於外部導入的包,也是配置在.classpath文件中的,只要添加一行(或多行)配置:
<classpathentry kind="lib" path="lib的地址"/>
(3)如果工作區里沒有.vscode文件夾和launch.json可以手動創建。不手動創建的話,在調試時也VSCode也會生成一個模板,以供修改。
launch.json文件內容
{
"version": "0.2.0",
"configurations": [
{
"type": "java",
"name": "Debug (Launch)",
"request": "launch",
"cwd": "${workspaceFolder}/target",
"sourcePaths": [
"$(workspaceRoot)/src"
],
"classPaths": [
"",
"$(workspaceRoot)/target"
],
"mainClass": "${fileBasenameNoExtension}",
"args": ""
}
]
}
其中,cwd是配置javac命令運行的根目錄,這里應指定編譯后的.class文件所在的根目錄
sourcePaths配置源碼目錄,classPaths配置編譯后的.class目錄,mainClass配置要運行的主類文件
args是運行class文件需要添加的參數,根據需要配置即可
(4) 接下來編譯寫java代碼:JavaTest2.java,Peaple.java,注意這時沒有再報 Classpath is incomplete.的錯誤
(5) 接下來編譯運行JavaTest2.java,我們看到兩個類生成的.class文件都保存在target文件夾下
二、用Maven創建Java項目,並在VSCode中開發
1. 安裝Maven之后,進行配置,我安裝到了C:\Program Files\maven-3.5.4
系統環境變量里,添加MAVEN_HOME(或M2_HOME),其值為C:\Program Files\maven-3.5.4,然后PATH環境變量最后附加上";%MAVEN_HOME%\bin"
配置完成檢測一下,在命令控制行里輸入 mvn -version,會輸出maven版本和jdk版本,前提是要有jdk
2. 在VSCode中配置Maven
"maven.executable.path": "C:\\Program Files\\maven-3.5.4\\bin\\mvn", "java.configuration.maven.userSettings": "C:\\Program Files\\maven-3.5.4\\conf\\settings.xml", "maven.terminal.customEnv": [ { "environmentVariable": "JAVA_HOME", "value": "C:\\Program Files\\Java\\jdk1.8.0_172" } ]
3. 創建一個工作區,用命令控制行進入該工作區,用mvn命令創建一個項目框架:mvn archetype:generate
maven命令詳見:https://www.cnblogs.com/yjmyzz/p/3495762.html#commentform
我們創建一個簡單的maven項目,項目名為JavaTest3,包名為test,Maven完了項目框架的創建。
框架結構如下:
JavaTest3
├── pom.xml
└── src
└── main
│ └── java
│ └── test
│ └── App.java
└── test
└── java
└── test
└── AppTest.java
4. 用VSCode打開JavaTest3文件夾,什么都不用做,VSCode會自動把.project、.classpath文件和.setting文件夾及里面的內容建好,甚至也已經生成了.class文件
5. 按F5進行調試,修改launch.json文件里mainClass為“test.App”,運行成功。
另外,不用maven時,Build failed, do you want to continue?問題時有發生,再繼續關注一下。
上面方法生成的maven項目,在使用時發現不支持java 1.8,會報Lambda expressions are allowed only at source level 1.8 or above錯
要解決上面的問題,要在pom.xml文件的<properties>標簽中添加兩個屬性:

然后右鍵點擊pom.xml文件,選“Upate project configuration”,就可以了。
參考文章:
Java in VS Code:https://code.visualstudio.com/docs/languages/java
Building Java project shows error: "Build failed, do you want to continue?":https://github.com/redhat-developer/vscode-java/issues/495
"Classpath is incomplete" warning:https://github.com/redhat-developer/vscode-java/wiki/%22Classpath-is-incomplete%22-warning
maven學習(上)- 基本入門用法:https://www.cnblogs.com/yjmyzz/p/3495762.html#commentform
Java VScode 手動導入jar:https://www.jianshu.com/p/ed1deb28aab9
VS code + Java 配置與使用:https://blog.csdn.net/antony1776/article/details/80298326
配置vscode調試java代碼:https://www.codercto.com/a/12779.html
以下兩個鏈接殺毒軟件報有病毒,謹慎打開
http://blog.hotsun168.com/index.php/archives/10/
http://blog.hotsun168.com/index.php/archives/16/