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

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

  •  
  •   leeyuzhe · 72 天前 · 6461 次点击
    这是一个创建于 72 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    vs code ai copilot 比 idea 强,这是我用 vscode 的原因。
    byte10
        22
    byte10  
       72 天前
    ctrl + shitf + p ,然后 有一个 java: Rebuild Projects , 就可以构建了。
    dudubaba
        23
    dudubaba  
       72 天前
    用 vscode 写 java 就跟用 idea 写 js 一样,都是属于太闲了没事折腾型。
    Hozoy
        24
    Hozoy  
       72 天前
    @dudubaba #23 WebStorm 和 idea 差别不大吧,感觉就是默认插件的不同,前者写前端也挺好用的
    dragondove
        25
    dragondove  
       72 天前
    @dudubaba idea 写 js 挺好用的,全栈开发时使用同一种工具也更方便,即使对于 js ,idea 的补全,跳转搜索支持还是做的比 vsc 好
    CynicalRose
        26
    CynicalRose  
       72 天前
    发下插件,现在有微软插件组和红帽插件组两个方案, 都需要在 setting 里面配置 jdk 目录和 maven 的 config-settings.xml 路径。配置好重启,插件加载完毕,可以直接在 main 上 run 或 debug
    BreadBig
        27
    BreadBig  
       72 天前 via iPhone
    手菜折腾不下来,我目前就是 cursor 生成,idea 修改 debug🥲
    leeyuzhe
        28
    leeyuzhe  
    OP
       72 天前
    @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
       72 天前
    @mmdsun 我这是多模块,但是在一个大的项目中,在 idea 中不需要提前 mvn install
    leeyuzhe
        30
    leeyuzhe  
    OP
       72 天前
    @BreadBig 此为上策
    siweipancc
        31
    siweipancc  
       72 天前 via iPhone
    vs 一堆人在这推广 java 新增功能,你看 idea 家有吗
    Antihank
        32
    Antihank  
       72 天前
    vscode 我只用来写代码和用 codeRunner 做 debug
    mvn 什么的全部都用命令行,编译发布都命令行,太长就写成 alias 或者 shell
    免费的东西肯定不如收费的来的舒服
    Antihank
        33
    Antihank  
       72 天前
    自动编译的话,我都是关掉,然后用 mvn clean compile
    "java.autobuild.enabled": false,
    "java.debug.settings.forceBuildBeforeLaunch": false,
    marcong95
        34
    marcong95  
       72 天前
    @proxytoworld 有一种我当年写 uniapp 的时候用 vscode 写 hbuilderx 编译的「美感」。。。。
    Kaiv2
        35
    Kaiv2  
       72 天前   ❤️ 1
    @leeyuzhe 跟 eclipse 类似如何选择 maven profile https://github.com/redhat-developer/vscode-java/issues/3213
    CatchXS
        36
    CatchXS  
       72 天前
    @leeyuzhe 有配置 jdk 路径么,vscode 需要指定 jdk 启动路径。
    txzh007
        37
    txzh007  
       72 天前
    cursor 和 codeium 比如何
    lnbiuc
        38
    lnbiuc  
       72 天前
    不要折磨自己
    achira
        39
    achira  
       72 天前
    头铁,真是别人说什么信什么啊
    IamUNICODE
        40
    IamUNICODE  
       72 天前
    不要折磨自己。。我用这个写 python 都头疼,不过 python 我也菜就是了
    ssxs727
        41
    ssxs727  
       72 天前
    我也试过,配置起来相对麻烦,还是 IDEA 好,开箱即用。

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

    @Kaiv2 #35 这正是我需要的,goooooood job !
    longzhx
        44
    longzhx  
       71 天前
    你这些问题都很简单,只是你是第一次遇到而已。
    针对第一个第二个的问题,启动指定 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
       71 天前
    @longzhx
    spring.profiles.active=[profile 名称]这个是 springboot 的配置,我说的是 mvn 配置,跟你这个一个是运行时配置一个是编译配置,不是一个东西。

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