Intellij idea 在Intellij/IDEA插件中以编程方式调用Ant目标

Intellij idea 在Intellij/IDEA插件中以编程方式调用Ant目标,intellij-idea,codenameone,intellij-plugin,Intellij Idea,Codenameone,Intellij Plugin,我试图根据插件中的用户操作调用ant目标。这样做过去是有效的: AntConfiguration conf = AntConfiguration.getInstance(project); Myplugin.xml包含以下条目: <depends optional="false">AntSupport</depends> AntSupport 如前所述 但是,对于IntelliJ的当前版本,它会引发以下异常: java.lang.ClassCastException

我试图根据插件中的用户操作调用ant目标。这样做过去是有效的:

AntConfiguration conf = AntConfiguration.getInstance(project);
My
plugin.xml
包含以下条目:

<depends optional="false">AntSupport</depends>
AntSupport
如前所述

但是,对于IntelliJ的当前版本,它会引发以下异常:

java.lang.ClassCastException: 无法强制转换com.intellij.lang.ant.config.impl.antConfigurationMPL 转到com.intellij.lang.ant.config.AntConfiguration com.intellij.lang.ant.config.AntConfiguration.getInstance(AntConfiguration.java:38) 在 com.codename1.plugin.intellij.ant.AntRunner.getAntFile(AntRunner.java:133) 在 com.codename1.plugin.intellij.ant.AntRunner.runTarget(AntRunner.java:59) 在 com.codename1.plugin.intellij.actions.CodenameOneAction.runAntTarget(CodenameOneAction.java:61) 在 com.codename1.plugin.intellij.actions.sendandoridbuild.actionPerformed(sendandoridbuild.java:17) 在 com.intellij.openapi.actionSystem.ex.ActionUtil.performActionDumbAware(ActionUtil.java:191) 在 com.intellij.openapi.actionSystem.impl.ActionMenuItem$actionTransmiter$1.run(ActionMenuItem.java:311) 在 com.intellij.openapi.wm.impl.FocusManagerImpl.runOnOwnContext(FocusManagerImpl.java:958) 在 intellij.openapi.wm.impl.IdeFocusManagerImpl.runOnOwnContext(IdeFocusManagerImpl.java:124) 在 com.intellij.openapi.actionSystem.impl.ActionMenuItem$actionTransmiter.actionPerformed(ActionMenuItem.java:281) 在 fireActionPerformed(AbstractButton.java:2022) 在 com.intellij.openapi.actionSystem.impl.ActionMenuItem.fireActionPerformed(ActionMenuItem.java:109) 在 com.intellij.ui.plaf.beg.BegMenuItemUI.doClick(BegMenuItemUI.java:513) 在 com.intellij.ui.plaf.beg.BegMenuItemUI.access$300(BegMenuItemUI.java:45) 在 com.intellij.ui.plaf.beg.BegMenuItemUI$mymouseinpurthandler.mouserereleased(BegMenuItemUI.java:533) 位于java.awt.Component.ProcessMouseeEvent(Component.java:6525) javax.swing.JComponent.ProcessMouseeEvent(JComponent.java:3324)位于 位于的java.awt.Component.processEvent(Component.java:6290) java.awt.Container.processEvent(Container.java:2234)位于 dispatchEventImpl(Component.java:4881)位于 dispatchEventImpl(Container.java:2292)位于 dispatchEvent(Component.java:4703)位于 awt.LightweightDispatcher.RetargetMouseeEvent(Container.java:4898) 在 java.awt.LightweightDispatcher.ProcessMouseeEvent(Container.java:4533) 位于java.awt.LightweightDispatcher.dispatchEvent(Container.java:4462) 位于java.awt.Container.dispatchEventImpl(Container.java:2278) dispatchEventImpl(Window.java:2750)位于 dispatchEvent(Component.java:4703)位于 dispatchEventImpl(EventQueue.java:758)位于 访问$500(EventQueue.java:97) java.awt.EventQueue$3.run(EventQueue.java:709)在 java.awt.EventQueue$3.run(EventQueue.java:703)在 java.security.AccessController.doPrivileged(本机方法)位于 ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:75) 在 ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:86) 在java.awt.EventQueue$4.run(EventQueue.java:731)处 java.awt.EventQueue$4.run(EventQueue.java:729)在 java.security.AccessController.doPrivileged(本机方法)位于 ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:75) 位于java.awt.EventQueue.dispatchEvent(EventQueue.java:728) intellij.ide.IdeEventQueue.defaultDispatchEvent(IdeEventQueue.java:857) 在 IdeEventQueue._dispatchEvent(IdeEventQueue.java:654) 在 dispatchEvent(IdeEventQueue.java:386) 在 java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201) 在 java.awt.EventDispatchThread.PumpeEventsforFilter(EventDispatchThread.java:116) 在 java.awt.EventDispatchThread.PumpeEventsforHierarchy(EventDispatchThread.java:105) 在 java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101) 在 EventDispatchThread.pumpEvents(EventDispatchThread.java:93) 在java.awt.EventDispatchThread.run(EventDispatchThread.java:82)


这在我看来是一个bug,但我可能在某种程度上误用了API,因为据我所知,这并不是完全“文档化”的。

好的,找到了这个。我忽略了将库依赖项设置为提供状态,并将它们设置为“已编译”状态。这在依赖项窗口中有些隐藏: