欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

VScode+Java配置與使用的詳細(xì)步驟

 更新時(shí)間:2018年11月28日 10:42:15   作者:墨城之左  
這篇文章主要介紹了VS code+Java配置與使用的詳細(xì)步驟,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧

1 vs code

也是剛剛接觸 vs code,但是一見(jiàn)鐘情。

最近在試著使用 nim language,推薦用 vs code,就試用了一下,然后一發(fā)不可收拾。于是有了一個(gè)大膽的想法,干脆全部轉(zhuǎn)到 vs code 上來(lái)吧,現(xiàn)在的情況是什么呢?前段用 webstorm/sublime,java 用 idea,python 用 PyCharm, ruby 用 RubyMine, c# 用 vs express,多麻煩啊。

vs code 其實(shí)就是的編輯器,是個(gè)馬甲,但是各種語(yǔ)言都可以實(shí)現(xiàn)對(duì)應(yīng)的插件,包裝成一個(gè) ide,這很好,很先進(jìn)!最最最關(guān)鍵的是,開(kāi)源,免費(fèi)!

1.1 什么是 IDE

集成開(kāi)發(fā)環(huán)境(IDE,Integrated Development Environment )是用于提供程序開(kāi)發(fā)環(huán)境的應(yīng)用程序,一般包括代碼編輯器、編譯器、調(diào)試器和圖形用戶界面等工具。集成了代碼編寫(xiě)功能、分析功能、編譯功能、調(diào)試功能等一體化的開(kāi)發(fā)軟件服務(wù)套。

如微軟的Visual Studio系列,作為 c++/c# IDE;
Java 的 IDE 如 Eclipse 和 IntelliJ IDEA。

1.2 VS code 是個(gè)編輯器

vs code 并不是一個(gè) IDE,它是個(gè)編輯器,是個(gè)有理想的編輯器,可以通過(guò)相應(yīng)語(yǔ)言的插件,將其包裝成一個(gè) IDE。

vi 也是一個(gè)編輯器,很多程序員就是使用 vi 來(lái)做開(kāi)發(fā),構(gòu)建用獨(dú)立的工具,比如 make,ant,maven,gradle 等等。ctags 用來(lái)對(duì)源代碼中的符號(hào)建索引。。。。

那么對(duì)于程序員來(lái)說(shuō),怎樣的編輯器來(lái)算是好用的呢?

  1. 打開(kāi)文件,方便快捷,語(yǔ)法高亮,美觀!
  2. 編輯:增刪改查,豐富快捷
  3. 符號(hào):符號(hào)定義查詢、跳轉(zhuǎn),符號(hào)引用….
  4. 依賴管理:自動(dòng)導(dǎo)入依賴包
  5. 分析:類結(jié)構(gòu),繼承關(guān)系…….
  6. 自動(dòng)提示 …..
  7. 其他高級(jí)特性。。。

上述特性里面,有些是 vs code 可以做的,有些是必須由插件來(lái)完成的。比如符號(hào)和依賴管理等跟語(yǔ)言特征相關(guān)的,那就必須由相應(yīng)語(yǔ)言的插件來(lái)完成,你不能在使用 vs code 時(shí),因?yàn)榇a無(wú)法跳轉(zhuǎn)到definition,就罵 vs code 不智能。

2 java

盡管 idea 體驗(yàn)也很不錯(cuò),但有時(shí)還是感覺(jué)太臃腫了,不夠流暢。

當(dāng)然,必須承認(rèn) vs code 肯定無(wú)法匹敵 idea 所提供的完整特性,對(duì)于初學(xué)者來(lái)說(shuō),idea/eclipse 絕對(duì)是必經(jīng)之路。然而,作為程序員,我們也必須清楚,設(shè)計(jì)是一種取舍,idea 提供的無(wú)微不至的保姆一般的圖形界面,終將會(huì)顯得友好但啰嗦,會(huì)有那么一天,你成熟了,長(zhǎng)大了,就嫌她啰里啰嗦了。

2.1 java support extensions

https://code.visualstudio.com/docs/languages/java

按照官方文檔,老老實(shí)實(shí)的安裝好 java 相關(guān)的 extensions。

簡(jiǎn)單來(lái)說(shuō):

VS Code Java IDE =

編輯器:vs code 
構(gòu)建工具: maven/gradle
語(yǔ)言支持: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ì)提供這些語(yǔ)言級(jí)別的特性,這也是為什么 JetBrains 有那么多產(chǎn)品的原因:

IntelliJ IDEA - 一套智慧型的Java整合開(kāi)發(fā)工具,特別專注與強(qiáng)調(diào)程序師的開(kāi)發(fā)撰寫(xiě)效率提升

  • PHPStorm 7.0 發(fā)布,PHP 集成開(kāi)發(fā)工具
  • PyCharm 3發(fā)布,智能Python集成開(kāi)發(fā)工具
  • RubyMine -RubyMine 是一個(gè)為Ruby 和Rails開(kāi)發(fā)者準(zhǔn)備的IDE,其帶有所有開(kāi)發(fā)者必須的功能,并將之緊密集成于便捷的開(kāi)發(fā)環(huán)境中。
  • WebStorm8.0 發(fā)布,智能HTML/CSS/JS開(kāi)發(fā)工具

vs code 通過(guò) extension 來(lái)提供相應(yīng)的 IDE 特性,對(duì)于 Java 來(lái)說(shuō),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ò)展的功能:

  1. 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.
  2. A Java Document Model providing API for manipulating a structured Java source document.
  3. Code assist and code select support.
  4. 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.
  5. Evaluation support either in a scrapbook page or a debugger context.
  6. Source code formatter

需要注意的是,該 extension 使用了 Eclipse IDE 相關(guān)的實(shí)現(xiàn)。當(dāng)生成一個(gè)新的 java 項(xiàng)目時(shí),比如通過(guò) mvn 來(lái) generate 一個(gè)HelloWorld 項(xiàng)目:

mvn archetype:generate -DarchetypeGroupId=org.apache.maven.archetypes -DarchetypeArtifactId=maven-archetype-quickstart -DarchetypeVersion=1.3

然后用 vs code 打開(kāi)項(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)生成的,如果目錄下沒(méi)有生成相應(yīng)的文件,那么就會(huì)出現(xiàn)各種問(wèn)題,jdt 相關(guān)的很多功能無(wú)法正常使用,比如符號(hào)跳轉(zhuǎn),自動(dòng)導(dǎo)入等。

如果用 IDEA 打開(kāi) java 項(xiàng)目,同樣會(huì)創(chuàng)建類似的文件,只不過(guò)結(jié)構(gòu)和名稱不一樣而已。

2.4 Java Classpath is incomplete. Only syntax errors will be reported

如果碰到該警告信息,說(shuō)明 java 項(xiàng)目在打開(kāi)過(guò)程中出問(wèn)題了,缺少 .classpath .project 文件。有可能是以下原因,比如:

  • jdt 相關(guān)的 extentsions 沒(méi)有安裝
  • java 環(huán)境沒(méi)有按官方說(shuō)明配置
  • extension 配置不完整

這種情況下,符號(hào)跳轉(zhuǎn),自動(dòng)補(bǔ)全,導(dǎo)入等等功能,肯定無(wú)法正常使用。

但是使用 mvn 進(jìn)行構(gòu)建是沒(méi)有問(wèn)題的,一定要清楚,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)文件無(wú)法產(chǎn)生。這個(gè)時(shí)候?qū)?build.gradle 刪掉,只留下 pom.xml 文件,再次打開(kāi)項(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 來(lái)作為 java ide 完全沒(méi)有問(wèn)題,使用過(guò)程中難免會(huì)碰到些問(wèn)題,多查閱,多思考,應(yīng)該能解決。

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • JAVA基礎(chǔ)-GUI

    JAVA基礎(chǔ)-GUI

    這篇文章主要介紹了JAVA中關(guān)于GUI的相關(guān)知識(shí),文中代碼非常詳細(xì),供大家參考和學(xué)習(xí),感興趣的朋友可以了解下
    2020-06-06
  • spring boot simple類型cache使用詳解

    spring boot simple類型cache使用詳解

    這篇文章主要介紹了spring boot simple類型cache使用,這里用的不是 redis 的緩存,simple 的緩存默認(rèn)用的是java的ConcurrentHashMap, 單純的simple緩存,本文給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2023-10-10
  • Java?Spring框架創(chuàng)建項(xiàng)目與Bean的存儲(chǔ)與讀取詳解

    Java?Spring框架創(chuàng)建項(xiàng)目與Bean的存儲(chǔ)與讀取詳解

    本篇文章將介紹Spring項(xiàng)目的創(chuàng)建,IDEA國(guó)內(nèi)源的配置以及Bean的存儲(chǔ)與讀取,所謂的Bean其實(shí)就是對(duì)象的意思,更詳細(xì)地說(shuō)Spring Bean是被實(shí)例的,組裝的及被Spring 容器管理的Java對(duì)象
    2022-07-07
  • Java將Object轉(zhuǎn)換為數(shù)組的代碼

    Java將Object轉(zhuǎn)換為數(shù)組的代碼

    這篇文章主要介紹了Java將Object轉(zhuǎn)換為數(shù)組的情況,今天在使用一個(gè)別人寫(xiě)的工具類,這個(gè)工具類,主要是判空操作,包括集合、數(shù)組、Map等對(duì)象是否為空的操作,需要的朋友可以參考下
    2022-09-09
  • MyBatis Plus 入門使用詳細(xì)教程

    MyBatis Plus 入門使用詳細(xì)教程

    這篇文章主要介紹了MyBatis Plus 入門使用詳細(xì)教程,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-08-08
  • Java中ArrayList刪除的常用操作及方法

    Java中ArrayList刪除的常用操作及方法

    ArrayList是最常用的一種java集合,在開(kāi)發(fā)中我們常常需要從ArrayList中刪除特定元素,本文主要介紹了Java中ArrayList刪除的常用操作及方法,感興趣的可以了解一下
    2023-11-11
  • 淺談java如何生成分享海報(bào)工具類

    淺談java如何生成分享海報(bào)工具類

    這篇文章主要介紹了淺談java如何生成分享海報(bào)工具類,想了解分享海報(bào)知識(shí)的同學(xué)不要錯(cuò)過(guò)哦
    2021-04-04
  • 詳解如何使用Java流API構(gòu)建樹(shù)形結(jié)構(gòu)數(shù)據(jù)

    詳解如何使用Java流API構(gòu)建樹(shù)形結(jié)構(gòu)數(shù)據(jù)

    在實(shí)際開(kāi)發(fā)中,構(gòu)建樹(shù)狀層次結(jié)構(gòu)是常見(jiàn)需求,本文主要為大家詳細(xì)介紹了如何使用Java 8 Stream API將扁平化的菜單數(shù)據(jù)轉(zhuǎn)換為具有層級(jí)關(guān)系的樹(shù)形結(jié)構(gòu),需要的可以參考下
    2024-04-04
  • 利用spring?boot+WebSocket實(shí)現(xiàn)后臺(tái)主動(dòng)消息推送功能

    利用spring?boot+WebSocket實(shí)現(xiàn)后臺(tái)主動(dòng)消息推送功能

    目前對(duì)于服務(wù)端向客戶端推送數(shù)據(jù),常用技術(shù)方案有輪詢、websocket等,下面這篇文章主要給大家介紹了關(guān)于利用spring?boot+WebSocket實(shí)現(xiàn)后臺(tái)主動(dòng)消息推送功能的相關(guān)資料,需要的朋友可以參考下
    2022-04-04
  • SpringBoot之@Aspect注解解讀

    SpringBoot之@Aspect注解解讀

    這篇文章主要介紹了SpringBoot之@Aspect注解解讀,AOP是面向切面編程,通過(guò)預(yù)編譯方式和運(yùn)行期動(dòng)態(tài)代理實(shí)現(xiàn)程序功能的統(tǒng)一維護(hù)的一種技術(shù),而@Aspect 就是把一個(gè)類定義為切面供容器讀取,需要的朋友可以參考下
    2024-01-01

最新評(píng)論