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

embedded/2025/2/28 15:47:14/

背景

简要说明:

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# 此处申明了需要依赖javaplugins.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>


http://www.ppmy.cn/embedded/168824.html

相关文章

2024年第十五届蓝桥杯大赛软件赛省赛Python大学A组真题解析

文章目录 试题A: 拼正方形(本题总分:5 分)解析答案试题B: 召唤数学精灵(本题总分:5 分)解析答案试题C: 数字诗意解析答案试题A: 拼正方形(本题总分:5 分) 【问题描述】 小蓝正在玩拼图游戏,他有7385137888721 个2 2 的方块和10470245 个1 1 的方块,他需要从中挑出一些…

深入理解Java反射机制:从基础到高级应用

一、反射机制概述 Java 反射机制是 Java 语言的一个重要特性&#xff0c;它允许程序在运行时动态地获取类的信息&#xff0c;以及动态地调用对象的方法、修改属性等操作。这意味着程序员可以在运行期间检查和操作类、对象的各种元素&#xff0c;而不需要在编译时就知道这些信息…

30天开发操作系统 第24天 -- 窗口操作

一、窗口切换 1.0 前天开始我们的应用程序可以显示自己的窗口了&#xff0c;现在画面上到处都是窗口&#xff0c;我们急需能够 切换窗口顺序的功能&#xff0c;使得在需要的时候可以查 看最下面的窗口的内容。这个功能看起来不难&#xff0c;我们马上来实现它。 不过&#xf…

mapbox基础,使用geojson加载heatmap热力图层

👨‍⚕️ 主页: gis分享者 👨‍⚕️ 感谢各位大佬 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍⚕️ 收录于专栏:mapbox 从入门到精通 文章目录 一、🍀前言1.1 ☘️mapboxgl.Map 地图对象1.2 ☘️mapboxgl.Map style属性1.3 ☘️heatmap热力图层样式二、🍀使用geojs…

详解 Spring 配置数据源的两种方式

在 Spring 框架中配置数据源&#xff08;DataSource&#xff09;主要有两种方式&#xff1a; 通过 Setter 注入配置数据源通过 jdbc.properties 配置文件方式 本博文将使用 Druid 作为数据源&#xff0c;其在 Spring 项目中常见且高效。 Druid 被广泛认为是性能最佳的连接池…

【随手笔记】RTthread软件占用资源记录

记录某项目开发初期的笔记 嵌入式软件不关心占用硬件资源是不合适的 大多数开发的场景 受限于成本考虑 MCU的 RAM和ROM有限 富余的只能说明 有水分或者钱多 省1块 1万就是1万 10万就是 10万 钱是公司的 困难是自己的 标准来说 开发难度优先级很低 因为开发人员只是电脑工具 标…

阿里开源正式开园文生视频、图生视频模型-通义万相 WanX2.1

简介 发布时间与背景 通义万相 Wan2.1 模型于 2025年1月 发布&#xff0c;并迅速登顶视频生成领域权威评测 Vbench 的榜首&#xff0c;超越了包括 Sora、HunyuanVideo、Minimax 等国内外知名模型&#xff0c;并于这周开源。它是阿里云在 AI 视频生成领域的最新成果&#xff0…

C++17中方便文件操作的工具包filesystem-250227

对文件的删除操作用iostream包中的工具不容易实现而使用C17中的filesystem包中工具就可以轻松实现 #include <iostream> #include <filesystem>namespace fs std::filesystem; int main() {std::string path "./workdir";for (auto p : fs::directory…