V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
leeyuzhe
V2EX  ›  Visual Studio Code

有用 vscode 写 Java 的么?我怎么一上来就遇到一堆问题。

  •  
  •   leeyuzhe ·
    JustLookAtNow · 2024-08-29 09:10:03 +08:00 · 8303 次点击
    这是一个创建于 368 天前的主题,其中的信息可能已经有所发展或是发生改变。

    项目背景 jdk 1.8 + maven + springboot

    1.运行前编译这个是全自动的吗?为啥有时候改了代码生效,有时候没反应。另外在执行 mvn clean 后压根不知道重新编译直接运行会报错主类不存在。

    2.我的 maven 有多个 profile ,运行前编译如何指定配置?就是 mvn -P 选项

    3.我现在每次运行前都会显示 Build failed, do you want to continue ,找了一圈也没找到具体的错误在哪。

    4.另外我是一个多模块的 maven 项目,有些模块互相依赖,然后它编译的时候不知道去自动编译依赖么? The project cannot be built until its prerequisite iot-common-kafka is built. Cleaning and building all projects is recommended

    我现在的诉求很简单,就是点击一下运行按钮,该编译的编译然后把程序跑起来就行

    第 1 条附言  ·  2024-08-29 14:04:08 +08:00
    现在最困惑的就是点击 run/debug 之前这个自动编译,找不到相关文档也找不到在哪控制这个行为,也不知道它底层是用的 javac 还是什么编译的
    52 条回复    2024-09-06 00:47:50 +08:00
    kenberkeley
        1
    kenberkeley  
       2024-08-29 09:12:19 +08:00 via iPhone
    想不折腾只能 Intellij
    Richardhtw
        2
    Richardhtw  
       2024-08-29 09:18:27 +08:00   ❤️ 1
    我倒是没遇到啥坑,就是智能提示没有 IDEA 舒服
    Ayanokouji
        3
    Ayanokouji  
       2024-08-29 09:19:20 +08:00
    这需求也不需要 ide 吧,直接 maven 命令运行就行吧。
    PS:实在不行,去下个 idea 社区版也行
    leeyuzhe
        4
    leeyuzhe  
    OP
       2024-08-29 09:21:56 +08:00
    @Richardhtw @kenberkeley
    @Ayanokouji
    我就是 idea 用户,在 idea 上面右上角选中 mvn 配置然后直接点运行就都是好的,完全不需要手工 build 什么的。
    现在切换到 vscode 主要是想尝试下最近名声大噪的 cursor
    wetalk
        5
    wetalk  
       2024-08-29 09:45:31 +08:00   ❤️ 1
    有啊,头铁
    proxytoworld
        6
    proxytoworld  
       2024-08-29 09:48:53 +08:00
    @leeyuzhe cursor 写代码,idea 编译
    leeyuzhe
        7
    leeyuzhe  
    OP
       2024-08-29 09:49:24 +08:00
    @proxytoworld 懂了,您是卖内存条的!
    wugp
        8
    wugp  
       2024-08-29 09:59:29 +08:00
    配置一个启动脚本吧,先用 maven 编译,再用 java -jar 运行
    xtreme1
        9
    xtreme1  
       2024-08-29 10:00:34 +08:00
    别折磨自己
    Kaiv2
        10
    Kaiv2  
       2024-08-29 10:00:37 +08:00
    1. 使用 maven clean 后 可能不会触发 jdt.ls 自动 build, 需要手动 build 一下
    2. Maven 有个插件(如果你安装了 Extension Pack for Java 包含在里面),安装后在左下角有个 Maven 的菜单,点开里面有 Profiles 选择,如果你的命令复杂也可以添加自定义命令。
    3. 估计是你的项目依赖问题,试试 mvn compile 后再打开
    4. 同上
    paranoia
        11
    paranoia  
       2024-08-29 10:04:41 +08:00   ❤️ 4
    由俭入奢易,由奢入俭难
    人生苦短我用 idea
    yuankui
        12
    yuankui  
       2024-08-29 10:06:31 +08:00
    珍惜生命,Java 还是老老实实 IDEA 吧
    Navee
        13
    Navee  
       2024-08-29 10:11:27 +08:00
    建议放弃转投 idea
    chendl111
        14
    chendl111  
       2024-08-29 10:15:27 +08:00
    哪个最好用选哪个
    flmn
        15
    flmn  
       2024-08-29 10:16:41 +08:00
    数次想切换,但都退回了 idea ,但是能看到 vscode 对 java 的支持越来越好了,让子弹再飞一会儿。
    lsk569937453
        16
    lsk569937453  
       2024-08-29 10:28:17 +08:00
    用 vscode 写 java 强行增加难度,直接社区版 idea 写 java 即可。
    jalena
        17
    jalena  
       2024-08-29 10:31:24 +08:00
    都 vscode 了,记事本更佳哟~
    Kaleidopink
        18
    Kaleidopink  
       2024-08-29 10:39:00 +08:00   ❤️ 1
    我比你更绝,直接在 neovim 里面写 java (没办法, 电脑只有 8G 内存,根本带不动 IDEA )
    xiaozhu317
        19
    xiaozhu317  
       2024-08-29 10:45:00 +08:00
    折磨自己
    KP45
        20
    KP45  
       2024-08-29 10:58:27 +08:00
    你不会是没装插件吧,IDEA 这种没必要浪费时间,跑不起来就换,虽然我用 vscode 写 Java 好多年了
    mmdsun
        21
    mmdsun  
       2024-08-29 10:59:26 +08:00
    没看懂啥意思 idea 多模块 也需要在 root 下 mvn install 一下吧。

    vs code ai copilot 比 idea 强,这是我用 vscode 的原因。
    byte10
        22
    byte10  
       2024-08-29 11:15:16 +08:00
    ctrl + shitf + p ,然后 有一个 java: Rebuild Projects , 就可以构建了。
    dudubaba
        23
    dudubaba  
       2024-08-29 11:23:49 +08:00
    用 vscode 写 java 就跟用 idea 写 js 一样,都是属于太闲了没事折腾型。
    Hozoy
        24
    Hozoy  
       2024-08-29 11:39:17 +08:00
    @dudubaba #23 WebStorm 和 idea 差别不大吧,感觉就是默认插件的不同,前者写前端也挺好用的
    dragondove
        25
    dragondove  
       2024-08-29 11:42:02 +08:00
    @dudubaba idea 写 js 挺好用的,全栈开发时使用同一种工具也更方便,即使对于 js ,idea 的补全,跳转搜索支持还是做的比 vsc 好
    CynicalRose
        26
    CynicalRose  
       2024-08-29 12:39:03 +08:00
    发下插件,现在有微软插件组和红帽插件组两个方案, 都需要在 setting 里面配置 jdk 目录和 maven 的 config-settings.xml 路径。配置好重启,插件加载完毕,可以直接在 main 上 run 或 debug
    BreadBig
        27
    BreadBig  
       2024-08-29 13:53:33 +08:00 via iPhone
    手菜折腾不下来,我目前就是 cursor 生成,idea 修改 debug🥲
    leeyuzhe
        28
    leeyuzhe  
    OP
       2024-08-29 13:57:44 +08:00
    @Kaiv2

    1.手动 build 可以,,但是这样指定不了 mvn 中 profile 。。
    2. 你这个方式是可以的,但仅适用于用 maven 打包或者编译时生效,点击 run 或者 debug 直接跑程序时完全不起作用
    3.mvn compile 没问题,问题是 run 或者 debug 的自动 build 不行。

    @byte10
    用这个命令能显示出我所有的 mvn 模块,然后全选然后 build 就能成功,但是这样指定不了 mvn 中 profile


    @CynicalRose
    插件配置我没有进行自定义的 java home 以及 m2 配置,但目前看来都是对的,因为我可以手动 build 或者 mvn compile 后点击 run 运行。


    总之我只有手动在 maven 窗口那里选择 Profiles 之后点击 compile ,然后再点击 run/debug ,我的程序才能正常运行。
    leeyuzhe
        29
    leeyuzhe  
    OP
       2024-08-29 14:00:45 +08:00
    @mmdsun 我这是多模块,但是在一个大的项目中,在 idea 中不需要提前 mvn install
    leeyuzhe
        30
    leeyuzhe  
    OP
       2024-08-29 14:01:11 +08:00
    @BreadBig 此为上策
    siweipancc
        31
    siweipancc  
       2024-08-29 14:09:38 +08:00 via iPhone
    vs 一堆人在这推广 java 新增功能,你看 idea 家有吗
    Antihank
        32
    Antihank  
       2024-08-29 14:12:48 +08:00
    vscode 我只用来写代码和用 codeRunner 做 debug
    mvn 什么的全部都用命令行,编译发布都命令行,太长就写成 alias 或者 shell
    免费的东西肯定不如收费的来的舒服
    Antihank
        33
    Antihank  
       2024-08-29 14:16:22 +08:00
    自动编译的话,我都是关掉,然后用 mvn clean compile
    "java.autobuild.enabled": false,
    "java.debug.settings.forceBuildBeforeLaunch": false,
    marcong95
        34
    marcong95  
       2024-08-29 14:27:14 +08:00
    @proxytoworld 有一种我当年写 uniapp 的时候用 vscode 写 hbuilderx 编译的「美感」。。。。
    Kaiv2
        35
    Kaiv2  
       2024-08-29 14:53:00 +08:00   ❤️ 1
    @leeyuzhe 跟 eclipse 类似如何选择 maven profile https://github.com/redhat-developer/vscode-java/issues/3213
    CatchXS
        36
    CatchXS  
       2024-08-29 15:03:14 +08:00
    @leeyuzhe 有配置 jdk 路径么,vscode 需要指定 jdk 启动路径。
    txzh007
        37
    txzh007  
       2024-08-29 16:03:31 +08:00
    cursor 和 codeium 比如何
    lnbiuc
        38
    lnbiuc  
       2024-08-29 16:08:49 +08:00
    不要折磨自己
    achira
        39
    achira  
       2024-08-29 16:49:56 +08:00
    头铁,真是别人说什么信什么啊
    IamUNICODE
        40
    IamUNICODE  
       2024-08-29 18:17:33 +08:00
    不要折磨自己。。我用这个写 python 都头疼,不过 python 我也菜就是了
    ssxs727
        41
    ssxs727  
       2024-08-29 18:47:59 +08:00
    我也试过,配置起来相对麻烦,还是 IDEA 好,开箱即用。

    我最近用 VS Code 写 Python ,连格式化代码都要装插件……要是写大项目的话估计还得是 PyCharm 。
    zoumouse
        42
    zoumouse  
       2024-08-29 19:50:04 +08:00
    用 VSCode 写 Java 前,最好先明白怎么通过命令行编译和运行自己的项目。idea 已经把大家养的基础什么也不懂了,当然效率确实很高....
    leeyuzhe
        43
    leeyuzhe  
    OP
       2024-08-30 09:42:58 +08:00
    @zoumouse 我当然知道怎么编译,但是这不是不想每次点击运行以前手动编译下么

    @Kaiv2 #35 这正是我需要的,goooooood job !
    longzhx
        44
    longzhx  
       2024-08-30 09:52:26 +08:00
    你这些问题都很简单,只是你是第一次遇到而已。
    针对第一个第二个的问题,启动指定 profile 请在.vscode/launch.json 中 args 加上--spring.profiles.active=[profile 名称],运行前都会按照这个 profile 来编译,运行后有个运行条,最后的小闪电,修改代码后可以直接点击实现热加载(只限方法体内修改)
    针对第三第四遇到的问题,最简单的方法 F1 调出名称窗口,输入 JAVA:Clean 就弹出清理工作空间,确认后 vscode 会重新加载编译项目,都可以解决。

    个人还是喜欢 vscode ,内存占用没 idea 那么变态,方法修改热加载吊打 idea ,远程 linux 开发可以吊打 idea 。

    假如你喜欢界面配置,不喜欢文本配置来的直接,请直接下载 idea 和 idea 粉丝一起狂欢。
    leeyuzhe
        45
    leeyuzhe  
    OP
       2024-08-30 11:24:17 +08:00
    @longzhx
    spring.profiles.active=[profile 名称]这个是 springboot 的配置,我说的是 mvn 配置,跟你这个一个是运行时配置一个是编译配置,不是一个东西。

    清理工作区对我无效,只能手动选择构建项目然后把所有模块打上对勾才行。
    longzhx
        46
    longzhx  
       2024-08-30 11:52:21 +08:00
    @leeyuzhe 哈哈,Java 非 springboot 项目不要用 vscode
    wssy001
        47
    wssy001  
       2024-08-30 23:05:50 +08:00
    Java 从业者表示 直接用 IDEA 吧,省时省心
    IDEA 内存占用大就是因为拿空间换的时间(时间往往和用户体验相关)
    我问过几个拿 VSCode 开发 Java 项目的,听得最多的就是,如果想要 VSCode 达到 IDEA 那种体验,你必须得裝好多个插件,内存也少不了吃很多。甚至还有人说,同样的开发体验,IDEA 如果吃 8GB VSCode 至少会吃 7GB
    higker
        48
    higker  
       2024-08-30 23:24:43 +08:00
    https://github.com/microsoft/vscode-java-pack 把这个插件安装完成就可以写了,再使用 graalvm.org 这个版本 JDK ,很爽。
    inza9hi
        49
    inza9hi  
       2024-09-01 00:39:30 +08:00
    @leeyuzhe 我能想到的办法:
    1. 修改 maven 默认的 profiles
    2. maven 插件里面有一个默认参数
    leeyuzhe
        50
    leeyuzhe  
    OP
       2024-09-01 12:41:57 +08:00
    @inza9hi 解决了,楼上有人给了设置的地方
    https://github.com/redhat-developer/vscode-java/issues/3213
    这里的设置对运行前编译生效
    inza9hi
        51
    inza9hi  
       2024-09-01 17:58:28 +08:00
    @leeyuzhe 你遇到不能 debug 的问题了吗? https://www.v2ex.com/t/1069305
    kophuai
        52
    kophuai  
       361 天前
    vscode 最大的问题是如何做到格式化代码和 idea 一个样的规则.. 否则团队内 idea,vscode 混用, 代码格式化一塌糊涂了
    关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   925 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 20:51 · PVG 04:51 · LAX 13:51 · JFK 16:51
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.