Intellij 插件中的 java.lang.NoClassDefFoundError

Posted

技术标签:

【中文标题】Intellij 插件中的 java.lang.NoClassDefFoundError【英文标题】:java.lang.NoClassDefFoundError in Intellij Plugin 【发布时间】:2019-05-14 19:56:26 【问题描述】:

我正在尝试为 Intellij 构建一个插件,但每次我的代码指向另一个模块中的类或外部库时,我都会在运行时收到 java.lang.NoClassDefFoundError

通过runIde 在我的测试和沙盒中一切正常。

我还设法通过创建一个新项目来重现该错误,该项目只有一个动作和一个带有类和空方法的模块。

根等级:

构建脚本 ext.kotlin_version = '1.2.31' 存储库 mavenCentral() 依赖 类路径“org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version” 插件 id 'org.jetbrains.intellij' 版本 '0.3.12' 组“测试” 版本“1.0-SNAPSHOT” 应用插件:'kotlin' 存储库 mavenCentral() 依赖 编译“org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version” 编译项目(':testmodule') 编译科特林 kotlinOptions.jvmTarget = "1.8" 编译TestKotlin kotlinOptions.jvmTarget = "1.8" 智能 版本“2018.1.6” 补丁插件Xml 更改备注 """ 在此处添加更改说明。可以使用大多数 html 标记"""

动作:

一揽子行动 导入 com.intellij.openapi.actionSystem.* 导入包.OtherModuleClass 类 TestAction : AnAction() 覆盖有趣的 actionPerformed(e: AnActionEvent?) OtherModuleClass().otherModuleMethod()

其他模块类:

包包 类其他模块类 有趣的 otherModuleMethod()

【问题讨论】:

> java.lang.NoClassDefFoundError 在什么类上?这门课是公开的吗? @AlexanderZolotov 是公开的,我的代码编译,我的单元测试运行,在沙箱中启动插件工作。问题是当我获取生成的 .jar 文件并将其安装在 IDE 上进行实际测试时 【参考方案1】:

我发现了我的问题。

我在我的 IDE 中安装了 build/libs 中的 jar,而不是 build/distributions 中的 zip

【讨论】:

【参考方案2】:

如果其他人正在寻找类似问题的解决方案,我通过在 build.gradle 中添加 java 插件来修复它

apply plugin "java"

【讨论】:

以上是关于Intellij 插件中的 java.lang.NoClassDefFoundError的主要内容,如果未能解决你的问题,请参考以下文章

使用intellij的idea集成开发工具中的git插件(转)

在 IntelliJ 中找不到 Maven java-doc 插件

IntelliJ的“UML支持”插件

干货|IntelliJ IDEA插件开发

Intellij IDEA 配置Subversion插件

Intellij IDEA Maven 插件 - 管理依赖项