1、在系统上安装一个版本的gradle,用`gradle init --type java-application`创建一个默认的java项目,假设项目目录是hellojava

2、vscode写java首先要安装Java Extension Pack(下面简称JEP),这个扩展会自带两个依赖项安装,一个是Debugger for java,还有一个的language support for java by red hat,这些是利用Eclipse的JDT实现的java语言支持

然后把hellojava文件夹添加到vscode的工作区,JEP会自动识别该gradle项目并通过JDT将该项目集成到vscode中,出现以下事件则说明正确识别了:

2.1、在状态栏会看到Starting Java Language Server...并成功走到100%,这个步骤JEP根据你的gradlew(windows下是gradle.bat)下载安装了对应版本的gradle(仅用于该java项目,不是系统全局的)

2.2、hellojava中与build.gradle同目录下出现了.project和.classpath文件(Eclipse的东西),说明JEP已经利用JDT关联好你的gradle java项目了

2.3、hellojava中与build.gradle同目录下出现了bin文件夹,里面是你src中java文件对应的class文件,说明vscode已经利用JEP下载的gradle帮你build好了该项目(是的,你不用手动去打gradle build命令,自动build),但是注意,这里vscode的JEP利用gradle只会帮你生成class文件用于debug(你只需要编辑你的java文件并按F5进行debug即可),并不等价于gradle build命令,gradle build命令还会帮你做unit testing、打包jar等等,另外,你手动敲gradle build生成的东西都在build目录下,而不是bin目录下,bin目录下的东西是vscode按F5调试时候找的class文件,而build目录下的class文件是gradle run运行的,要注意区别

3、最近发现通过deb包安装的vscode突然无法正确build和debug java项目了,出现以下症状(不一定同时出现):

3.1、bin目录中的class文件无法与src中的java文件同步,修改了java文件,class文件貌似没有被重新编译

3.2、bin目录中的class文件全部消失

3.3、F5启动项目报错,大意是:找不到主类

3.4、“输出”里面发现JEP报错,大意是无法从gradle.4.x.bin.zip安装gradle(说明#2.1中的步骤失败了),同时,打开项目中java文件的时候,状态栏有个大拇指朝下(鄙视的手势),点击后跳到“输出”的报错界面;这里还有一种报错方式就是告诉你无法同步项目的状态,其实也是表示JDT无法同步你的gradle项目

4、我估计了一下,出现#3中描述的问题,估计是因为权限问题,JEP无法成功安装gradle并启动Java Language Server,为什么这么说,因为deb包安装的时候是要输入sudo的密码的,安装在/usr/share目录下,而启动vscode是没有用sudo的

4.1、测试了一下,sudo启动vscode,就不会出现#3中的问题了,但是带来的问题就是不用sudo就没法用vscode了

4.2、那么解决办法就是把vscode安装到/home目录下,不用deb包安装,直接下载tar.gz包解压到/home目录下,这样就不存在权限问题了

备注:其实一开始我用deb包安装的vscode写gradle的java项目也是好好的,也没出现上面#4所谓的“权限问题”,但是昨天不知道抽什么风就突然不能用了,折腾半天才按上面的步骤解决,真尼玛扯蛋

vscode + gradle 创建 java 项目 - java language server无法启动的更多相关文章

  1. 使用Spring Boot和Gradle创建AngularJS项目

    Spring Boot 是由 Pivotal 团队提供的全新框架,其设计目的是用来简化新 Spring 应用的初始搭建以及开发过程.该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的 ...

  2. SpringBoot25 gradle安装、利用gradle创建SrpingBoot项目

    1 gradle安装 技巧01:gradle依赖JDK或者JRE,而且版本至少时1.7 1.1 下载安装包 到gradle官网下载安装包[PS: 也可以利用命令的方式安装,本案例是利用安装包的方式] ...

  3. 3、使用Gradle创建Libgdx项目

    (原文链接:http://www.libgdx.cn/topic/20/3-%E4%BD%BF%E7%94%A8gradle%E5%88%9B%E5%BB%BAlibgdx%E9%A1%B9%E7%9 ...

  4. Ubuntu下eclipse不能新建java项目 java project的解决办法

    在ubuntu系统中,装了eclipse,打开过,后来装了JDK,却不能新建java项目.重装了几遍eclipse也没有用. 原因分析: 之所以新建找不到java项目是因为eclipse有残留文件导致 ...

  5. IDEA 创建HDFS项目 JAVA api

    1.创建quickMaven 1.在properties中写hadoop 的版本号并且通过EL表达式的方式映射到dependency中 2.写一个repostory将依赖加载到本地仓库中 这是加载完成 ...

  6. 二gradle创建SSM项目——Hello word

    一创建gradle web项目 1.以下是我的项目结构web工程+工具module,mapper用来存放mybatis-plus自动生成类,通过 MpGenerator.class 生成.   项目结 ...

  7. gradle创建spring-boot项目

    刚来新公司,熟悉了公司项目搭建的框架,了解到了一种新的项目管理工具:gradle,从网上了解,据说比maven更加灵活化,于是便学习了一番.在此记录下来,一遍以后使用.gradle的安装就不说了,网上 ...

  8. idea 下gradle创建springboot 项目

    InterlijIdea 开发环境下创建基于springBoot的项目. 环境 1.jdk1.5以上 2.interlijidea 15 以上 步骤 1.File –>new –>Proj ...

  9. idea中,使用Gradle创建的项目,如何变为web项目

    当idea开发项目时,使用gradle构建项目,包引用完后,发现idea并没有正确识别项目为web项目. 主要有两点表现: 1. src/main/resources的resources目录没有或有但 ...

随机推荐

  1. Android Stuido 方法参数 p0,p1

    Android Stuido 方法参数 p0,p1 参考文献 https://stackoverflow.com/questions/49219439/incorrect-variable-names ...

  2. Xamarin Essentials教程获取路径文件系统FileSystem

    Xamarin Essentials教程获取路径文件系统FileSystem 文件系统用于管理设备内的各类文件.通过文件系统,应用程序可以创建永久文件和临时文件,也可以获取预先打包的文件,如预设数据库 ...

  3. JMeter-java.lang.OutOfMemoryError: PermGen space错误

    PermGen space的全称是Permanent Generation space,是指内存的永久保存区域,这块内存主要是被JVM存放Class和Meta信息的,Class在被Loader时就会被 ...

  4. Java并发编程(十一)-- Java中的锁详解

    上一章我们已经简要的介绍了Java中的一些锁,本章我们就详细的来说说这些锁. synchronized锁 synchronized锁是什么? synchronized是Java的一个关键字,它能够将代 ...

  5. Shell脚本笔记(二)Shell变量

    Shell变量 一)全局环境变量 全局变量对于定义它的shell和其子shell都是可见的,但如果生成它的shell被终止,全局变量也就消失了.另外全局变量会被子shell的同名变量覆盖. #定义一个 ...

  6. 潭州课堂25班:Ph201805201 django 项目 第二十一课 文章主页 新闻列表页面功能 (课堂笔记)

    新闻列表页功能 1.分析 业务处理流程: 判断前端传的标签分类id是否为空,是否为整数.是否超过范围 判断前端传的当前文章页数是否为空,是否为整数.是否超过范围 请求方法:GET url定义:/new ...

  7. BZOJ2240 : ural1676 Mortal Combat

    首先如果最大匹配不足$n$个那么显然每条边都不可能在匹配为$n$的方案中. 对于一条边$(u,v)$,如果它可能在最大匹配中,有两种情况: $1.(u,v)$是当前方案的匹配边. $2.$可以沿着$( ...

  8. 命令行添加subl命令

    添加了此命令后可以使用subl加文件或路径,就能通过命令行使用sublime text打开相应的文件或目录. 这里我的是MacOS,windows系统换路径就好. 第一步 sudo ln -s /Ap ...

  9. 关于ionic2打包android时gradle下载不了的解决方法(附:简单优化启动速度彩蛋)

    问题 之前在使用ionic2时使用建立android平台命令或者编译时,总是会在获取gradle时卡住,等很久进度也不变化,导致命令超时失败.于是经过查阅资料和自己实践测试,总结出以下办法. 方法 其 ...

  10. 通过pip安装python web

    提示 No module named 'utils' 我就pip install utils 提示 No module named 'db' 然后我就 pip install db 报错 No mod ...