我正在尝试为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() {} }
答案 0 :(得分:1)
我发现了我的问题所在。
我正在IDE中安装jar
中的build/libs
,而不是zip
中的build/distributions
。
答案 1 :(得分:0)
如果其他人正在寻找解决类似问题的方法,我通过在build.gradle中添加java插件来解决它
apply plugin "java"