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

news/2025/2/28 9:48:16/

背景

简要说明:

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/news/1575470.html

相关文章

c++_sort函数

sort介绍 在C/C中&#xff0c;要想应用排序算法&#xff0c;可以使用c语言的qsort&#xff0c;也可以使用c的sort 。 1)qsort 是 C 标准库提供的一个通用排序函数&#xff0c;位于 stdlib.h 头文件中。 qsort 适用于 C 语言中的数组。 2)sort 是 C 中STL的泛型算法&#xf…

在VSCode 中使用通义灵码最新版详细教程

在 VSCode 中使用通义灵码&#xff1a;最新版详细教程与使用场景 Visual Studio Code&#xff08;简称 VSCode&#xff09;是一款由微软开发的轻量级、功能强大的开源代码编辑器&#xff0c;支持多种编程语言&#xff0c;深受开发者喜爱。而通义灵码&#xff08;TONGYI Lingma…

scalefit分析系统-人体工程学分析系统

基于先进的德国scalefit分析系统&#xff0c;可根据职业科学和生物力学参数直接在现场对体力工作量进行可视化和评估&#xff0c;帮助检测疾病、伤害和损害的原因。 据调研&#xff0c;国内整套系统报价在人民币65万左右。包含动捕硬件、分析软件、工程学系统等。 工作站配置要…

文教资料杂志文教资料杂志社文教资料编辑部2024年第19期目录

语言文学研究 “X什么Y”构式主观性与主观化浅析 郑昕怡; 杜诗之“忧”的艺术抒写 李佳欣; 中国儿童绘本发展简史探析 杜娟; 《凝视太阳》的文学伦理学批评解读 张佳圆; 论《哈姆雷特》中的寓言式宇宙观与个体思想的矛盾冲突 张佳佳; 符号象征&#xf…

kafka-新增topic副本数

一. 简述&#xff1a; 在 Kafka 中增加主题&#xff08;Topic&#xff09;的副本数可以提高数据的可靠性和容错能力。在创建topic时&#xff0c;如果设置的不合理&#xff0c;或者创建后有新的需求变动&#xff0c;就需要调整了。 二. 方法&#xff1a; 可通过官方的指令&am…

Maven的传递性、排除依赖、生命周期、插件

一、Maven的传递性 蓝色背景中的两个jar包是projectA的直接依赖&#xff0c;其余的Jar包是projectA的间接依赖。 projectA可以使用直接依赖&#xff0c;也可以使用间接依赖。 maven-projectB项目引入了maven-projectC(整个项目打成了jar包&#xff09;和junit两个jar包。 ma…

深入理解 Kubernetes 命名空间:高效管理与隔离资源的关键

深入理解 Kubernetes 命名空间:高效管理与隔离资源的关键 目录 深入理解 Kubernetes 命名空间:高效管理与隔离资源的关键什么是命名空间?命名空间的作用1. 资源隔离2. 多租户支持3. 资源管理和策略控制4. 简化管理创建和使用命名空间命名空间与集群中的其他资源结语在 Kuber…

【Python爬虫(69)】解锁游戏数据宝藏:Python爬虫实战攻略

【Python爬虫】专栏简介:本专栏是 Python 爬虫领域的集大成之作,共 100 章节。从 Python 基础语法、爬虫入门知识讲起,深入探讨反爬虫、多线程、分布式等进阶技术。以大量实例为支撑,覆盖网页、图片、音频等各类数据爬取,还涉及数据处理与分析。无论是新手小白还是进阶开发…