使用 VSCode 开发 Kotlin

456 字
3 分钟
...阅读
...评论

之前有些后端项目用的 Kotlin + Spring Boot,IDE 用的 IDEA 开发的。但是 IDEA 中的 GitHub Copilot 插件实在太弱智,打算换成 VSCode 来开发 Kotlin。

网上几乎没有教程(可能确实没人这么干),踩了不少坑,试了很多插件,花了快一天时间才终于搞好。

首先,需要安装 VSCode 的 Java Extension Pack 插件包,这个插件包包含了 Java 开发所需的各种插件。

然后,还需要安装 kotlin-lsp 插件,这个是 Kotlin 官方的插件,提供了 Kotlin 的语法高亮、格式化、跳转等功能。需要注意的是,这个插件尚未发布到 VSCode 市场,需要手动下载并安装。另外,该插件当前只支持 Gradle 项目,不支持 Maven 项目。如果是 Maven 项目,得转换成 Gradle 项目才能使用该插件。

VSCode 配置:

{
  "[kotlin]": {
    "editor.defaultFormatter": "JetBrains.kotlin"
  }
}

F5 调试用的 launch.json 配置:

{
  "version": "0.2.0",
  "configurations": [
    {
      "type": "java",
      "name": "SpringBoot",
      "classPaths": ["$Auto", "${workspaceFolder}/build/libs/*"],
      "request": "launch",
      "mainClass": "net.yuanfen.op.xams.ApplicationKt"
    }
  ]
}

另外,kotlin-lsp 插件暂不支持 Gradle Kotlin DSLIssue#55)。

尝试了 ktfmtktfmt-gradleSpotless Gradle 等插件,最终都因为各种原因放弃了。

另外还遇到一个 kotlin-lsp 的奇怪 bug,就是插件一直报错和各种警告:

Error while resolving org.jetbrains.kotlin.fir.declarations.impl.FirValueParameterImpl from SEALED_CLASS_INHERITORS to ANNOTATION_ARGUMENTS current declaration phase SEALED_CLASS_INHERITORS origin: Source session: class org.jetbrains.kotlin.analysis.low.level.api.fir.sessions.LLFirSourcesSession module data: class org.jetbrains.kotlin.analysis.low.level.api.fir.projectStructure.LLFirModuleData KaModule: class org.jetbrains.kotlin.idea.base.fir.projectStructure.modules.source.KaSourceModuleImpl platform: JVM (1.8)


WARNING: package sun.awt.windows not in java.desktop
WARNING: package sun.awt.X11 not in java.desktop
WARNING: package com.sun.java.swing.plaf.gtk not in java.desktop
WARNING - #c.i.i.p.PluginManager - Plugin descriptor for plugin 'intellij.kotlin.searching.xml' has declared element 'visibility' which has no effect there
WARNING - #c.j.l.a.f.i.c.d.i.LSInspectionDiagnosticProviderImpl - org.jetbrains.kotlin.utils.KotlinExceptionWithAttachments: Unable to get element context

比较了两个文件夹,同样的代码,一个报错,一个不报错,报错的那个文件夹换个名字就好了。怀疑是缓存的问题,困扰了很久,最终找到了缓存位置:

/Users/bean/Library/Application Support/JetBrains/analyzer/workspaces/

删除该目录下的缓存文件夹,重启 VSCode 后问题解决。

评论区
Copyright © Bean Deng