Intellij插件中的java.lang.NoClassDefFoundError

时间:2018-12-13 14:57:14

标签: gradle intellij-idea intellij-plugin

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

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

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

root gradle:

buildscript {
    ext.kotlin_version = '1.2.31'

    repositories {
        mavenCentral()
    }
    dependencies {
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
    }
}

plugins {
    id 'org.jetbrains.intellij' version '0.3.12'
}

group 'test'
version '1.0-SNAPSHOT'

apply plugin: 'kotlin'

repositories {
    mavenCentral()
}

dependencies {
    compile "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version"
    compile project(':testmodule')
}

compileKotlin {
    kotlinOptions.jvmTarget = "1.8"
}
compileTestKotlin {
    kotlinOptions.jvmTarget = "1.8"
}
intellij {
    version '2018.1.6'
}
patchPluginXml {
    changeNotes """
      Add change notes here.
most HTML tags may be used""" }

操作:

package action

import com.intellij.openapi.actionSystem.*
import packages.OtherModuleClass

class TestAction : AnAction() {
    override fun actionPerformed(e: AnActionEvent?) {
        OtherModuleClass().otherModuleMethod()
    }
}

其他模块类:

package packages

class OtherModuleClass {

    fun otherModuleMethod() {}

}

2 个答案:

答案 0 :(得分:1)

我发现了我的问题所在。

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

答案 1 :(得分:0)

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

apply plugin "java"