用了一段时间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

2. Debugger for Java

3. Java Test Runner

4. Maven for Java

对于开发简单的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>标签中添加两个属性:

<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>

然后右键点击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/

VSCode搭建Java开发运行环境的更多相关文章

  1. 使用 Docker 搭建 Java Web 运行环境

    黄勇的博客 Docker 是 2014 年最为火爆的技术之一,几乎所有的程序员都听说过它.Docker 是一种“轻量级”容器技术,它几乎动摇了传统虚拟化技术的地位,现在国内外已经有越来越多的公司开始逐 ...

  2. 转:使用 Docker 搭建 Java Web 运行环境

    原文来自于:http://www.codeceo.com/article/docker-java-web-runtime.html Docker 是 2014 年最为火爆的技术之一,几乎所有的程序员都 ...

  3. 使用 Docker 搭建 Java Web 运行环境(转)

    原文 http://www.importnew.com/21798.html Docker 是 2014 年最为火爆的技术之一,几乎所有的程序员都听说过它.Docker 是一种“轻量级”容器技术,它几 ...

  4. Docker搭建Java Web运行环境

    1. 前提条件 安装了Docker的64位Linux 操作系统 Linux操作系统镜像 Linux版本的JDK压缩包 Linux版本的Tomcat压缩包 2. 启动容器 容器是在镜像的基础上来运行的, ...

  5. linux(ubuntu) 搭建java程序运行环境

    一:简介 ubuntu 系统的和linux差不多,我们需要在系统上搭建java程序运行环境,需要安装jdk,mysql这两个软件,tomcat是绿色版,直接通过taz -zxvf tomcat 就可以 ...

  6. Docker学习笔记之二,基于Dockerfile搭建JAVA Tomcat运行环境

    前言 在第一篇文字中,我们完全人工方式,一个命令一个命令输入,实现一个 java tomcat运行环境,虽然也初见成效,但很累人.如果依靠依靠脚本构建一个Tomcat容器实例,一个命令可以搞定,何乐而 ...

  7. 基于Dockerfile搭建JAVA Tomcat运行环境

    前言 在第一篇文字中,我们完全人工方式,一个命令一个命令输入,实现一个java tomcat运行环境,虽然也初见成效,但很累人.如果依靠依靠脚本构建一个Tomcat容器实例,一个命令可以搞定,何乐而不 ...

  8. VsCode搭建Java开发环境(Spring Boot项目创建、运行、调试)

    源码地址:https://github.com/YANGKANG01/Spring-Boot-Demo 安装扩展 安装如下两个主要扩展即可,这两个扩展已关联java项目开发主要使用的maven.spr ...

  9. [转]VsCode搭建Java开发环境(Spring Boot项目创建、运行、调试)

    源码地址:https://github.com/YANGKANG01/Spring-Boot-Demo 安装扩展 安装如下两个主要扩展即可,这两个扩展已关联java项目开发主要使用的maven.spr ...

随机推荐

  1. Binary Search Tree Learning Summary

    BST Definition BST is short for Binary Search Tree, by definition, the value of right node is always ...

  2. jQuery-2.DOM---节点插入

    DOM内部插入append()与appendTo() 动态创建的元素是不够的,它只是临时存放在内存中,最终我们需要放到页面文档并呈现出来.那么问题来了,怎么放到文档上? 这里就涉及到一个位置关系,常见 ...

  3. 【转载】 Deepmind星际争霸2平台使用第一轮-完成采矿

    原文地址: https://blog.csdn.net/woaipichuli/article/details/78645999 ----------------------------------- ...

  4. 读书笔记--《gongchandang宣言》

    纪念马克思诞辰200周年 末尾 gongchandang人不屑于隐瞒自己的观点和意图.他们公开宣布:他们的目的只有用暴力推翻全部现存的社会制度才能达到. 让统治接机在共产主义革命面前发抖吧. 无产者在 ...

  5. immutable.js使用总结

    1. immutable相当于 JSON.parse 和 JSON.stringify: 2.引入redux中,除了 在最外层 reducer中  import { combineReducers } ...

  6. oracle-rman-3

    http://blog.csdn.net/leshami/article/details/6032525 rman概述及体系结构 http://blog.itpub.net/23513800/view ...

  7. visio画图有感

    昨天在和一个同事看流程图,在我还在考虑图的含义时他说这个图太乱了,如果要团队成员看也会很费劲,并找出觉得画的好的案例. 对比两个图我发现了一个最大的差别是好的图形状都是水平或垂直对齐的,连接线也都是水 ...

  8. 第十四章 Java常用类

    14.常用类 14.1 字符串相关的类 1课时 14.2 JDK 8之前时间日期API 1课时 14.3 JDK8中新时间日期API 1课时 14.4 JDK8中的Optional类 1课时 14.5 ...

  9. C++ 是 编程界 的 背锅侠

    C++ 是 编程界 的 背锅侠, C++ 背的包袱 之 庞大复杂, 举世瞩目, 令人感动 . C++  标准 委员会 俨然 已成了一个 职业 . C++  把  静态编译 体系 发展到 庞大复杂, C ...

  10. 为什么浏览器User-agent总是有Mozilla字样

    你是否好奇标识浏览器身份的User-Agent,为什么每个浏览器都有Mozilla字样?Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 ( ...