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