当前位置: 首页 > news >正文

IDEA-插件开发踩坑记录-第六坑-UAST依赖问题

背景

简要说明:

UAST – Unified Abstract Syntax Tree

UAST (Unified Abstract Syntax Tree) is an abstraction layer on the PSI of different programming languages targeting the JVM (Java Virtual Machine). It provides a unified API for working with common language elements like classes and method declarations, literal values, and control flow operators.

大意:

UAST(统一抽象语法树)是针对JVM (Java虚拟机)的不同编程语言的PSI上的抽象层。它提供了一个统一的API,用于处理公共语言元素,如类和方法声明、文字值和控制流操作符。

你如果用到了PSI与JAVA相关的东西,都可能出现我这个问题;当然类似其他PSI抽象也可以参考这个解决办法。

在JetBrains-intellij-idea 插件开发时,编译正常,运行不正常的奇怪问题;

插件开发依赖版本(申明了依赖JAVA):

intellij {
    version.set("2024.1.7")
    type.set("IC") // Target IDE Platform
    # 此处申明了需要依赖java
    plugins.set(listOf("com.intellij.java"))
}

问题现象

编译正常,运行到 PsiMethod部分报错;

异常堆栈关键信息

#c.i.i.p.PluginManager - com/intellij/psi/PsiMethod
java.lang.NoClassDefFoundError: com/intellij/psi/PsiMethod

......

Caused by: java.lang.ClassNotFoundException: com.intellij.psi.PsiMethod PluginClassLoader(plugin=PluginDescriptor

......

结论

插件依赖需要检查三个步骤:JetBrains官方说明

  1. 确定 Plugin ID

  2. 检查项目设置

  3. 在plugin.xml中定义;

如果编译正常,运行出现 java.lang.NoClassDefFoundError一般而言是遗漏了第三个步骤。

解决办法很简单:在plugin.xml中添加如下内容:

<depends>com.intellij.java</depends>

相关文章:

  • wordpress 首页模板优化seo厂家
  • 营销型网站建设论坛网站设计与制作公司
  • 商会信息平台网站建设方案上往建站
  • vue做网站如何优化seo百度的网站网址
  • 四川网站建设有哪些廊坊今日头条新闻
  • 你有网站 我做房东 只收佣金的网站百度小说排行榜完本
  • Unity中协程的使用场景
  • [密码学实战]Java实现SM2数字信封(结合SM4对称加密)生成与解析
  • 船舶广播系统:航行中的信息枢纽和安全保障
  • 【STL】6.<map/multimap>
  • Redis 的 Bitmap(位图)的使用场景
  • 基于机器学习的结构MRI分析:预测轻度认知障碍向阿尔茨海默病的转化
  • vscode集成DeepSeek
  • 前端正则表达式完全指南:从入门到实战
  • 海洋cmsv9报错注入,order by 和limit注入
  • HTML:自闭合标签简单介绍
  • C语言(16)---------->二维数组
  • 什么是 MGX:MetaGPT
  • 基于 MyBatis-Plus 的多租户数据隔离方案
  • 自媒体多账号如何切换不同定位才能做得更好
  • 开源|Documind协同文档(接入deepseek-r1、支持实时聊天)
  • 深入探索C#中的async和await:原理、使用方法与最佳实践
  • 【deepseek第一课】从0到1介绍 采用ollama安装deepseek私有化部署,并实现页面可视化
  • Haption:机器人遥操作触觉力反馈技术革新解决方案
  • React核心知识及使用场景
  • Python 数据结构 2.时间复杂度和空间复杂度