IntelliJ 插件开发。 Class 启动调试时加载程序异常

IntelliJ Plugin Development. Class loader exception when start debugging

  1. 我正在使用 Gradle 构建系统
  2. 创建一个插件项目
  3. 具有以下plugin.xml文件内容

<idea-plugin>
  <id>com.magicbytes.kotlin-converter-plugin</id>
  <name>Kotlin Converter Gradle</name>
  <vendor email="support@yourcompany.com" url="http://www.yourcompany.com">YourCompany</vendor>

  <description>
    <![CDATA[
    Enter short description for your plugin here.<br>
    <em>most HTML tags may be used</em>
    ]]></description>

  <!-- please see http://www.jetbrains.org/intellij/sdk/docs/basics/getting_started/build_number_ranges.html for description -->
  <idea-version since-build="162" />

  <!-- please see http://www.jetbrains.org/intellij/sdk/docs/basics/getting_started/plugin_compatibility.html
         on how to target different products -->
  <!-- uncomment to enable plugin in all products
    <depends>com.intellij.modules.lang</depends>
    -->

  <extensions defaultExtensionNs="com.intellij">
  </extensions>

  <actions>
    <group id="MyPlugin.SampleMenu" text="Greeting" description="Greeting menu">
      <add-to-group group-id="MainMenu" anchor="last" />
      <action id="Myplugin.Textboxes" class="ThirdAction" text="Hello" description="Says hello" />
    </group>
  </actions>
</idea-plugin>

  1. 和Gradle构建文件内容

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

group 'com.magicbytes'
version '0.0.1'

apply plugin: 'java'

sourceCompatibility = 1.8

repositories {
  mavenCentral()
}

dependencies {
  testCompile group: 'junit', name: 'junit', version: '4.12'
}

intellij {
  version '2017.3.5'
}

intellij {
  plugins 'kotlin'
}

patchPluginXml {
  changeNotes ""
}

我 运行 遇到的问题是当我使用 KtVisitor 时出现以下异常:

Caused by: java.lang.ClassNotFoundException: org.jetbrains.kotlin.psi.KtVisitor PluginClassLoader[com.magicbytes.kotlin-converter-plugin, 0.0.1] com.intellij.ide.plugins.cl.PluginClassLoader@7591f7
    at com.intellij.ide.plugins.cl.PluginClassLoader.loadClass(PluginClassLoader.java:63)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    ... 28 mor**

首先,你没有说你是如何运行调试IDE的。我假设您使用的是 IDEA 版本而不是 gradle,我的猜测是正确的。下次请描述清楚。

两步(根据我的评论和你的回复):

  • id 'org.jetbrains.intellij' 更改为您的真实包名称以避免与现有 IDEA 插件冲突(可能 IDEA 核心正在使用此 ID)。
  • 停止使用 IDEA 版本。相反,使用 gradle runIde 命令启动调试 IDE.