java.lang.NoClassDefFoundError 在 Intellij 插件中

java.lang.NoClassDefFoundError in Intellij Plugin

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

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

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

root gradle:

构建脚本{
    ext.kotlin_version = '1.2.31'

    存储库{
        mavenCentral()
    }
    依赖关系{
        class路径"org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
    }
}

插件{
    id 'org.jetbrains.intellij' 版本 '0.3.12'
}

组 'test'
版本“1.0-SNAPSHOT”

应用插件:'kotlin'

存储库{
    mavenCentral()
}

依赖关系{
    编译 "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version"
    编译项目(':testmodule')
}

编译 Kotlin {
    kotlinOptions.jvmTarget = "1.8"
}
compileTestKotlin {
    kotlinOptions.jvmTarget = "1.8"
}
智能{
    版本 '2018.1.6'
}
patchPluginXml {
    更改备注 """
      在此处添加更改说明。
可以使用大多数 HTML 标签""" }

操作:

一揽子行动

导入 com.intellij.openapi.actionSystem.*
进口 packages.OtherModuleClass

class TestAction : AnAction() {
    覆盖有趣的 actionPerformed(e:AnActionEvent?){
        OtherModuleClass().otherModuleMethod()
    }
}

其他模块class:

包包

class 其他模块类 {

    有趣的 otherModuleMethod() {}

}

我发现我的问题是什么了。

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

如果其他人正在寻找类似问题的解决方案,我通过在 build.gradle

中添加 java 插件来修复它
apply plugin "java"