亲宝软件园·资讯

展开

VScode+Java配置与使用 VScode+Java配置与使用的详细步骤

墨城之左 人气:0

1 vs code

也是刚刚接触 vs code,但是一见钟情。

最近在试着使用 nim language,推荐用 vs code,就试用了一下,然后一发不可收拾。于是有了一个大胆的想法,干脆全部转到 vs code 上来吧,现在的情况是什么呢?前段用 webstorm/sublime,java 用 idea,python 用 PyCharm, ruby 用 RubyMine, c# 用 vs express,多麻烦啊。

vs code 其实就是的编辑器,是个马甲,但是各种语言都可以实现对应的插件,包装成一个 ide,这很好,很先进!最最最关键的是,开源,免费!

1.1 什么是 IDE

集成开发环境(IDE,Integrated Development Environment )是用于提供程序开发环境的应用程序,一般包括代码编辑器、编译器、调试器和图形用户界面等工具。集成了代码编写功能、分析功能、编译功能、调试功能等一体化的开发软件服务套。

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

1.2 VS code 是个编辑器

vs code 并不是一个 IDE,它是个编辑器,是个有理想的编辑器,可以通过相应语言的插件,将其包装成一个 IDE。

vi 也是一个编辑器,很多程序员就是使用 vi 来做开发,构建用独立的工具,比如 make,ant,maven,gradle 等等。ctags 用来对源代码中的符号建索引。。。。

那么对于程序员来说,怎样的编辑器来算是好用的呢?

  1. 打开文件,方便快捷,语法高亮,美观!
  2. 编辑:增删改查,丰富快捷
  3. 符号:符号定义查询、跳转,符号引用….
  4. 依赖管理:自动导入依赖包
  5. 分析:类结构,继承关系…….
  6. 自动提示 …..
  7. 其他高级特性。。。

上述特性里面,有些是 vs code 可以做的,有些是必须由插件来完成的。比如符号和依赖管理等跟语言特征相关的,那就必须由相应语言的插件来完成,你不能在使用 vs code 时,因为代码无法跳转到definition,就骂 vs code 不智能。

2 java

尽管 idea 体验也很不错,但有时还是感觉太臃肿了,不够流畅。

当然,必须承认 vs code 肯定无法匹敌 idea 所提供的完整特性,对于初学者来说,idea/eclipse 绝对是必经之路。然而,作为程序员,我们也必须清楚,设计是一种取舍,idea 提供的无微不至的保姆一般的图形界面,终将会显得友好但啰嗦,会有那么一天,你成熟了,长大了,就嫌她啰里啰嗦了。

2.1 java support extensions

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

按照官方文档,老老实实的安装好 java 相关的 extensions。

简单来说:

VS Code Java IDE =

编辑器:vs code 
构建工具: maven/gradle
语言支持:Eclipse ™ JDT Language Server

2.2 Language Support for Java(TM) by Red Hat

有些功能如:

等等!很显然,vs code 不会提供这些语言级别的特性,这也是为什么 JetBrains 有那么多产品的原因:

IntelliJ IDEA - 一套智慧型的Java整合开发工具,特别专注与强调程序师的开发撰写效率提升

vs code 通过 extension 来提供相应的 IDE 特性,对于 Java 来说,Language Support for Java(TM) by Red Hat 这个 extension 就是干这个事情的。

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 需要扩展的功能:

  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 相关的实现。当生成一个新的 java 项目时,比如通过 mvn 来 generate 一个HelloWorld 项目:

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

然后用 vs code 打开项目目录,会看到项目目录中会随之生成几个文件和目录:

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 自动生成的,如果目录下没有生成相应的文件,那么就会出现各种问题,jdt 相关的很多功能无法正常使用,比如符号跳转,自动导入等。

如果用 IDEA 打开 java 项目,同样会创建类似的文件,只不过结构和名称不一样而已。

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

如果碰到该警告信息,说明 java 项目在打开过程中出问题了,缺少 .classpath .project 文件。有可能是以下原因,比如:

这种情况下,符号跳转,自动补全,导入等等功能,肯定无法正常使用。

但是使用 mvn 进行构建是没有问题的,一定要清楚,mvn 是构建工具,只要源码完整正确,有 pom.xml 文件,那么 maven 就能正常工作。

另外,发现当项目同时支持 maven 和 gradle 时,vs code 创建项目会失败,导致 classpath 相关文件无法产生。这个时候将 build.gradle 删掉,只留下 pom.xml 文件,再次打开项目文件夹,就可以了。

2.5 项目结构

如上图,正常启动的java项目,需要包含

其中 Java Projects 中包含 .classpath, .project, .settings

总结

总之,用 vs code 来作为 java ide 完全没有问题,使用过程中难免会碰到些问题,多查阅,多思考,应该能解决。

加载全部内容

相关教程
猜你喜欢
用户评论