VScode+Java配置與使用的詳細(xì)步驟
1 vs code
也是剛剛接觸 vs code,但是一見鐘情。
最近在試著使用 nim language,推薦用 vs code,就試用了一下,然后一發(fā)不可收拾。于是有了一個(gè)大膽的想法,干脆全部轉(zhuǎn)到 vs code 上來吧,現(xiàn)在的情況是什么呢?前段用 webstorm/sublime,java 用 idea,python 用 PyCharm, ruby 用 RubyMine, c# 用 vs express,多麻煩啊。
vs code 其實(shí)就是的編輯器,是個(gè)馬甲,但是各種語言都可以實(shí)現(xiàn)對應(yīng)的插件,包裝成一個(gè) ide,這很好,很先進(jìn)!最最最關(guān)鍵的是,開源,免費(fèi)!
1.1 什么是 IDE
集成開發(fā)環(huán)境(IDE,Integrated Development Environment )是用于提供程序開發(fā)環(huán)境的應(yīng)用程序,一般包括代碼編輯器、編譯器、調(diào)試器和圖形用戶界面等工具。集成了代碼編寫功能、分析功能、編譯功能、調(diào)試功能等一體化的開發(fā)軟件服務(wù)套。
如微軟的Visual Studio系列,作為 c++/c# IDE;
Java 的 IDE 如 Eclipse 和 IntelliJ IDEA。
1.2 VS code 是個(gè)編輯器
vs code 并不是一個(gè) IDE,它是個(gè)編輯器,是個(gè)有理想的編輯器,可以通過相應(yīng)語言的插件,將其包裝成一個(gè) IDE。
vi 也是一個(gè)編輯器,很多程序員就是使用 vi 來做開發(fā),構(gòu)建用獨(dú)立的工具,比如 make,ant,maven,gradle 等等。ctags 用來對源代碼中的符號(hào)建索引。。。。
那么對于程序員來說,怎樣的編輯器來算是好用的呢?
- 打開文件,方便快捷,語法高亮,美觀!
- 編輯:增刪改查,豐富快捷
- 符號(hào):符號(hào)定義查詢、跳轉(zhuǎn),符號(hào)引用….
- 依賴管理:自動(dòng)導(dǎo)入依賴包
- 分析:類結(jié)構(gòu),繼承關(guān)系…….
- 自動(dòng)提示 …..
- 其他高級(jí)特性。。。
上述特性里面,有些是 vs code 可以做的,有些是必須由插件來完成的。比如符號(hào)和依賴管理等跟語言特征相關(guān)的,那就必須由相應(yīng)語言的插件來完成,你不能在使用 vs code 時(shí),因?yàn)榇a無法跳轉(zhuǎn)到definition,就罵 vs code 不智能。
2 java
盡管 idea 體驗(yàn)也很不錯(cuò),但有時(shí)還是感覺太臃腫了,不夠流暢。
當(dāng)然,必須承認(rèn) vs code 肯定無法匹敵 idea 所提供的完整特性,對于初學(xué)者來說,idea/eclipse 絕對是必經(jīng)之路。然而,作為程序員,我們也必須清楚,設(shè)計(jì)是一種取舍,idea 提供的無微不至的保姆一般的圖形界面,終將會(huì)顯得友好但啰嗦,會(huì)有那么一天,你成熟了,長大了,就嫌她啰里啰嗦了。
2.1 java support extensions
https://code.visualstudio.com/docs/languages/java
按照官方文檔,老老實(shí)實(shí)的安裝好 java 相關(guān)的 extensions。
簡單來說:
VS Code Java IDE =
編輯器:vs code 構(gòu)建工具: maven/gradle 語言支持:Eclipse ™ JDT Language Server
2.2 Language Support for Java(TM) by Red Hat
有些功能如:
- 代碼補(bǔ)全: code completion
- 自動(dòng)導(dǎo)入: organize imports
- 代碼跳轉(zhuǎn): code navigation
等等!很顯然,vs code 不會(huì)提供這些語言級(jí)別的特性,這也是為什么 JetBrains 有那么多產(chǎn)品的原因:
IntelliJ IDEA - 一套智慧型的Java整合開發(fā)工具,特別專注與強(qiáng)調(diào)程序師的開發(fā)撰寫效率提升
- PHPStorm 7.0 發(fā)布,PHP 集成開發(fā)工具
- PyCharm 3發(fā)布,智能Python集成開發(fā)工具
- RubyMine -RubyMine 是一個(gè)為Ruby 和Rails開發(fā)者準(zhǔn)備的IDE,其帶有所有開發(fā)者必須的功能,并將之緊密集成于便捷的開發(fā)環(huán)境中。
- WebStorm8.0 發(fā)布,智能HTML/CSS/JS開發(fā)工具
vs code 通過 extension 來提供相應(yīng)的 IDE 特性,對于 Java 來說,Language Support for Java(TM) by Red Hat 這個(gè) extension 就是干這個(gè)事情的。
Provides Java ™ language support via Eclipse ™ JDT Language Server, which utilizes Eclipse ™ JDT, M2Eclipse and Buildship.
2.3 什么是 JDT
JDT 叫做 Eclipse Java Development Tools
The JDT project provides the tool plug-ins that implement a Java IDE supporting the development of any Java application,
再看看 JDT core 都提供了哪些 vs code 需要擴(kuò)展的功能:
- A Java Model that provides API for navigating the Java element tree. The Java element tree defines a Java centric view of a project. It surfaces elements like package fragments, compilation units, binary classes, types, methods, fields.
- A Java Document Model providing API for manipulating a structured Java source document.
- Code assist and code select support.
- An indexed based search infrastructure that is used for searching, code assist, type hierarchy computation, and refactoring. The Java search engine can accurately find precise matches either in sources or binaries.
- Evaluation support either in a scrapbook page or a debugger context.
- Source code formatter
需要注意的是,該 extension 使用了 Eclipse IDE 相關(guān)的實(shí)現(xiàn)。當(dāng)生成一個(gè)新的 java 項(xiàng)目時(shí),比如通過 mvn 來 generate 一個(gè)HelloWorld 項(xiàng)目:
mvn archetype:generate -DarchetypeGroupId=org.apache.maven.archetypes -DarchetypeArtifactId=maven-archetype-quickstart -DarchetypeVersion=1.3
然后用 vs code 打開項(xiàng)目目錄,會(huì)看到項(xiàng)目目錄中會(huì)隨之生成幾個(gè)文件和目錄:
1 .settings
1.1 org.eclipse.jdt.core.prefs
eclipse.preferences.version=1 org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6 org.eclipse.jdt.core.compiler.compliance=1.6 org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning org.eclipse.jdt.core.compiler.source=1.6
1.2 org.eclipse.m2e.core.prefs
activeProfiles= eclipse.preferences.version=1 resolveWorkspaceProjects=true version=1
2 .project
<?xml version="1.0" encoding="UTF-8"?> <projectDescription> <name>spring-ldap-user-admin-sample</name> <comment></comment> <projects> </projects> <buildSpec> <buildCommand> <name>org.eclipse.jdt.core.javabuilder</name> <arguments> </arguments> </buildCommand> <buildCommand> <name>org.eclipse.m2e.core.maven2Builder</name> <arguments> </arguments> </buildCommand> </buildSpec> <natures> <nature>org.eclipse.jdt.core.javanature</nature> <nature>org.eclipse.m2e.core.maven2Nature</nature> </natures> </projectDescription>
3 .classpath
<?xml version="1.0" encoding="UTF-8"?> <classpath> <classpathentry kind="src" output="target/classes" path="src/main/java"> <attributes> <attribute name="optional" value="true"/> <attribute name="maven.pomderived" value="true"/> </attributes> </classpathentry> <classpathentry excluding="**" kind="src" output="target/classes" path="src/main/resources"> <attributes> <attribute name="maven.pomderived" value="true"/> </attributes> </classpathentry> <classpathentry kind="src" output="target/test-classes" path="src/test/java"> <attributes> <attribute name="optional" value="true"/> <attribute name="maven.pomderived" value="true"/> <attribute name="test" value="true"/> </attributes> </classpathentry> <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"> <attributes> <attribute name="maven.pomderived" value="true"/> </attributes> </classpathentry> <classpathentry kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER"> <attributes> <attribute name="maven.pomderived" value="true"/> </attributes> </classpathentry> <classpathentry kind="output" path="target/classes"/> </classpath>
要注意: 這些文件都是 extension 自動(dòng)生成的,如果目錄下沒有生成相應(yīng)的文件,那么就會(huì)出現(xiàn)各種問題,jdt 相關(guān)的很多功能無法正常使用,比如符號(hào)跳轉(zhuǎn),自動(dòng)導(dǎo)入等。
如果用 IDEA 打開 java 項(xiàng)目,同樣會(huì)創(chuàng)建類似的文件,只不過結(jié)構(gòu)和名稱不一樣而已。
2.4 Java Classpath is incomplete. Only syntax errors will be reported
如果碰到該警告信息,說明 java 項(xiàng)目在打開過程中出問題了,缺少 .classpath .project 文件。有可能是以下原因,比如:
- jdt 相關(guān)的 extentsions 沒有安裝
- java 環(huán)境沒有按官方說明配置
- extension 配置不完整
這種情況下,符號(hào)跳轉(zhuǎn),自動(dòng)補(bǔ)全,導(dǎo)入等等功能,肯定無法正常使用。
但是使用 mvn 進(jìn)行構(gòu)建是沒有問題的,一定要清楚,mvn 是構(gòu)建工具,只要源碼完整正確,有 pom.xml 文件,那么 maven 就能正常工作。
另外,發(fā)現(xiàn)當(dāng)項(xiàng)目同時(shí)支持 maven 和 gradle 時(shí),vs code 創(chuàng)建項(xiàng)目會(huì)失敗,導(dǎo)致 classpath 相關(guān)文件無法產(chǎn)生。這個(gè)時(shí)候?qū)?build.gradle 刪掉,只留下 pom.xml 文件,再次打開項(xiàng)目文件夾,就可以了。
2.5 項(xiàng)目結(jié)構(gòu)
如上圖,正常啟動(dòng)的java項(xiàng)目,需要包含
- JAVA PROJECTS
- MAVEN PROJECTS
- JAVA DEPENDENCIES
其中 Java Projects 中包含 .classpath, .project, .settings
總結(jié)
總之,用 vs code 來作為 java ide 完全沒有問題,使用過程中難免會(huì)碰到些問題,多查閱,多思考,應(yīng)該能解決。
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Java?Spring框架創(chuàng)建項(xiàng)目與Bean的存儲(chǔ)與讀取詳解
本篇文章將介紹Spring項(xiàng)目的創(chuàng)建,IDEA國內(nèi)源的配置以及Bean的存儲(chǔ)與讀取,所謂的Bean其實(shí)就是對象的意思,更詳細(xì)地說Spring Bean是被實(shí)例的,組裝的及被Spring 容器管理的Java對象2022-07-07Java將Object轉(zhuǎn)換為數(shù)組的代碼
這篇文章主要介紹了Java將Object轉(zhuǎn)換為數(shù)組的情況,今天在使用一個(gè)別人寫的工具類,這個(gè)工具類,主要是判空操作,包括集合、數(shù)組、Map等對象是否為空的操作,需要的朋友可以參考下2022-09-09詳解如何使用Java流API構(gòu)建樹形結(jié)構(gòu)數(shù)據(jù)
在實(shí)際開發(fā)中,構(gòu)建樹狀層次結(jié)構(gòu)是常見需求,本文主要為大家詳細(xì)介紹了如何使用Java 8 Stream API將扁平化的菜單數(shù)據(jù)轉(zhuǎn)換為具有層級(jí)關(guān)系的樹形結(jié)構(gòu),需要的可以參考下2024-04-04利用spring?boot+WebSocket實(shí)現(xiàn)后臺(tái)主動(dòng)消息推送功能
目前對于服務(wù)端向客戶端推送數(shù)據(jù),常用技術(shù)方案有輪詢、websocket等,下面這篇文章主要給大家介紹了關(guān)于利用spring?boot+WebSocket實(shí)現(xiàn)后臺(tái)主動(dòng)消息推送功能的相關(guān)資料,需要的朋友可以參考下2022-04-04