【问题标题】:IntellijIDEA - PluginClassLoader : ClassNotFoundException after moving class to another packageIntellijIDEA - PluginClassLoader:将类移动到另一个包后出现 ClassNotFoundException
【发布时间】:2017-02-27 07:38:25
【问题描述】:

我正在为 AndroidStudio 开发一个插件。 假设我的包名是com.name.app

我有一个类ApiHelper,它有一个ResponseHandler 接口。另一个类ButtonActionHandler(扩展AnAction)从ApiHelper 实现ResponseHandler

此时一切正常。但是如果我将 ApiHelper 移动到 com.name.app.helpers 包,我会得到 NoClassDefFoundError & PluginClassLoader - ClassNotFoundException。

知道为什么在将文件移动到另一个包后会发生这种情况吗?

【问题讨论】:

  • 你确定你的类没有被 plugin.xml 中的旧完全限定名引用吗?
  • 我只将ApiHelper 移动到com.name.app.helperplugin.xml 没有引用它。 ButtonActionHandler 仍然在 com.name.app 内,它在 plugin.xml 内的引用是正确的。
  • 您尝试过干净的构建吗?您确定 ApiHelper 的旧 FQN 没有在某个字符串或某个 XML 文件中引用吗?
  • 清理构建不起作用。不使用旧的 FQN。我将我的接口从ApiHelper 类提取到它自己的类中,将它放在com.name.app(与ButtonActionHandler 相同的包)中并且它的工作。如果我将界面移动到com.newname.helper,它也可以工作。但是如果ApiHelperResponseHandler都放在同一个包里面,就会出现这个错误。
  • 无法在新项目中重现该问题,因此我只是使缓存无效并重新启动了 intellij 及其工作。 :D

标签: java intellij-idea intellij-plugin


【解决方案1】:

使缓存无效并重新启动。它奏效了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-14
    • 1970-01-01
    • 2017-04-29
    相关资源
    最近更新 更多