2017-06-29 50 views
1

*将下面的更新*CodenameOne GUI Builder将NPE在崩溃的IntelliJ IDEA

也许我在这里做得不对,但如果是这样,这不是很清楚,我什么。这是一个已知的问题?我是否应该在特定的地方查找是否存在未满足的依赖关系等(如Java版本或IDE版本或插件或?)。请帮忙。

场景:

  • 我已经得到了最新的IntelliJ IDEA版本(14.1.7)
  • Java版本是1.8.0_91使用java -version
  • 刚刚更新到CN1 IDE从终端证实插件版本3.7.1
  • 刚刚开始一个新的项目,使用新的GUI生成器。

下面是步骤来重现:

  1. 包装上我单击鼠标右键,选择“新建表”,并给它一个名称
  2. 形式的java文件和.gui文件被创建
  3. 我对java文件上右键单击,选择“CN1-> GUI生成器”

然后理念barfs出一个错误事件(的NoSuchMethodError)并具有以下细节:和在GUI Builder不露面

堆栈跟踪:

com.intellij.openapi.vfs.VfsUtil.getChildren(Lcom/intellij/openapi/vfs/VirtualFile;Lcom/intellij/openapi/vfs/VirtualFileFilter;)Ljava/util/List; 
java.lang.NoSuchMethodError: com.intellij.openapi.vfs.VfsUtil.getChildren(Lcom/intellij/openapi/vfs/VirtualFile;Lcom/intellij/openapi/vfs/VirtualFileFilter;)Ljava/util/List; 
    at com.codename1.plugin.intellij.actions.GUIBuilderAction.actionPerformed(GUIBuilderAction.java:73) 
    at com.intellij.openapi.actionSystem.ex.ActionUtil.performActionDumbAware(ActionUtil.java:182) 
    at com.intellij.openapi.actionSystem.impl.ActionMenuItem$ActionTransmitter$1.run(ActionMenuItem.java:312) 
    at com.intellij.openapi.wm.impl.FocusManagerImpl.runOnOwnContext(FocusManagerImpl.java:958) 
    at com.intellij.openapi.wm.impl.IdeFocusManagerImpl.runOnOwnContext(IdeFocusManagerImpl.java:124) 
    at com.intellij.openapi.actionSystem.impl.ActionMenuItem$ActionTransmitter.actionPerformed(ActionMenuItem.java:282) 
    at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2022) 
    at com.intellij.openapi.actionSystem.impl.ActionMenuItem.fireActionPerformed(ActionMenuItem.java:109) 
    at com.intellij.ui.plaf.beg.BegMenuItemUI.doClick(BegMenuItemUI.java:512) 
    at com.intellij.ui.plaf.beg.BegMenuItemUI.access$300(BegMenuItemUI.java:44) 
    at com.intellij.ui.plaf.beg.BegMenuItemUI$MyMouseInputHandler.mouseReleased(BegMenuItemUI.java:532) 
    at java.awt.Component.processMouseEvent(Component.java:6535) 
    at javax.swing.JComponent.processMouseEvent(JComponent.java:3324) 
    at java.awt.Component.processEvent(Component.java:6300) 
    at java.awt.Container.processEvent(Container.java:2236) 
    at java.awt.Component.dispatchEventImpl(Component.java:4891) 
    at java.awt.Container.dispatchEventImpl(Container.java:2294) 
    at java.awt.Component.dispatchEvent(Component.java:4713) 
    at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4888) 
    at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4525) 
    at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4466) 
    at java.awt.Container.dispatchEventImpl(Container.java:2280) 
    at java.awt.Window.dispatchEventImpl(Window.java:2750) 
    at java.awt.Component.dispatchEvent(Component.java:4713) 
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758) 
    at java.awt.EventQueue.access$500(EventQueue.java:97) 
    at java.awt.EventQueue$3.run(EventQueue.java:709) 
    at java.awt.EventQueue$3.run(EventQueue.java:703) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76) 
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86) 
    at java.awt.EventQueue$4.run(EventQueue.java:731) 
    at java.awt.EventQueue$4.run(EventQueue.java:729) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76) 
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:728) 
    at com.intellij.ide.IdeEventQueue.defaultDispatchEvent(IdeEventQueue.java:734) 
    at com.intellij.ide.IdeEventQueue._dispatchEvent(IdeEventQueue.java:565) 
    at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.java:382) 
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201) 
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116) 
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105) 
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101) 
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93) 
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:82) 

* UPDATE * 基于一些很好的意见,我意识到我的想法只是版本几岁了,所以我已经升级到2017.1.4。我删除并重新安装3.7插件,以及我的测试项目也无法启动GUI Builder中,但现在有一个不同的错误和堆栈跟踪:

java.lang.IndexOutOfBoundsException: Index: 0 
    at com.intellij.util.containers.ContainerUtilRt$EmptyList.get(ContainerUtilRt.java:308) 
    at com.codename1.plugin.intellij.actions.GUIBuilderAction.actionPerformed(GUIBuilderAction.java:74) 
    at com.intellij.openapi.actionSystem.ex.ActionUtil$1.run(ActionUtil.java:215) 
    at com.intellij.openapi.actionSystem.ex.ActionUtil.performActionDumbAware(ActionUtil.java:232) 
    at com.intellij.openapi.actionSystem.impl.ActionMenuItem$ActionTransmitter.lambda$actionPerformed$0(ActionMenuItem.java:309) 
    at com.intellij.openapi.wm.impl.FocusManagerImpl.runOnOwnContext(FocusManagerImpl.java:929) 
    at com.intellij.openapi.wm.impl.IdeFocusManagerImpl.runOnOwnContext(IdeFocusManagerImpl.java:136) 
    at com.intellij.openapi.actionSystem.impl.ActionMenuItem$ActionTransmitter.actionPerformed(ActionMenuItem.java:299) 
    at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2022) 
    at com.intellij.openapi.actionSystem.impl.ActionMenuItem.lambda$fireActionPerformed$0(ActionMenuItem.java:116) 
    at com.intellij.openapi.application.TransactionGuardImpl.runSyncTransaction(TransactionGuardImpl.java:86) 
    at com.intellij.openapi.application.TransactionGuardImpl.lambda$submitTransaction$1(TransactionGuardImpl.java:109) 
    at com.intellij.openapi.application.TransactionGuardImpl.submitTransaction(TransactionGuardImpl.java:118) 
    at com.intellij.openapi.application.TransactionGuard.submitTransaction(TransactionGuard.java:122) 
    at com.intellij.openapi.actionSystem.impl.ActionMenuItem.fireActionPerformed(ActionMenuItem.java:116) 
    at com.intellij.ui.plaf.beg.BegMenuItemUI.doClick(BegMenuItemUI.java:513) 
    at com.intellij.ui.plaf.beg.BegMenuItemUI.access$300(BegMenuItemUI.java:45) 
    at com.intellij.ui.plaf.beg.BegMenuItemUI$MyMouseInputHandler.mouseReleased(BegMenuItemUI.java:533) 
    at java.awt.Component.processMouseEvent(Component.java:6541) 
    at javax.swing.JComponent.processMouseEvent(JComponent.java:3324) 
    at java.awt.Component.processEvent(Component.java:6306) 
    at java.awt.Container.processEvent(Container.java:2236) 
    at java.awt.Component.dispatchEventImpl(Component.java:4897) 
    at java.awt.Container.dispatchEventImpl(Container.java:2294) 
    at java.awt.Component.dispatchEvent(Component.java:4719) 
    at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4888) 
    at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4525) 
    at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4466) 
    at java.awt.Container.dispatchEventImpl(Container.java:2280) 
    at java.awt.Window.dispatchEventImpl(Window.java:2746) 
    at java.awt.Component.dispatchEvent(Component.java:4719) 
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:764) 
    at java.awt.EventQueue.access$500(EventQueue.java:98) 
    at java.awt.EventQueue$3.run(EventQueue.java:715) 
    at java.awt.EventQueue$3.run(EventQueue.java:709) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:80) 
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:90) 
    at java.awt.EventQueue$4.run(EventQueue.java:737) 
    at java.awt.EventQueue$4.run(EventQueue.java:735) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:80) 
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:734) 
    at com.intellij.ide.IdeEventQueue.defaultDispatchEvent(IdeEventQueue.java:827) 
    at com.intellij.ide.IdeEventQueue._dispatchEvent(IdeEventQueue.java:651) 
    at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.java:365) 
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201) 
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116) 
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105) 
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101) 
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93) 
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:82) 

回答

0

事实证明,我的Idea配置有一个较旧的Java(Android!)SDK配置为新项目的默认值。这个默认值导致新项目CREATION做了一些奇怪的事情,导致它无法使用GUI Builder。在我的项目配置中修复不正确的SDK不会使GUI Builder在预先存在的项目中工作;相反,我需要用正确的SDK集创建一个新项目,然后开始工作。也许可能有一个步骤来强制CodenameOne在修复后“重新创建”或“重新生成”项目,但这对我来说并不明显。

@Shai Almog,我希望这至少能为你提供一些线索,告诉你这个问题是如何发生的,以防止它在将来影响他人。目前我的问题是解决。感谢所有的帮助。

2

显然,插件版本3.7.1已安装的与IntelliJ IDEA 14.1.7不兼容。开发人员错误地指出,它没有执行真正的测试是兼容的。由于14.1.7相当老,以前没有人注意到这个问题。因此,要么更新到当前的IntelliJ IDEA版本,请尝试手动安装一些较旧的插件版本或file a bug to the plug-in developer

至于第二个问题,请check this answer

+0

Ahhhh我明白了。 IntelliJ Idea在他们的帮助菜单上有一个“更新”按钮,我想这会告诉我是否有新版本可用。显然我已经在我的IntelliJ Idea版本中显着落后了一段时间(只是在该版本上获得补丁)。我现在从他们的网站下载一个新版本。谢谢! –

+0

谢谢,我们会解决它。 –

+0

所以我安装了Idea 2017.1.4,删除并重新添加了codenameOne插件,我的测试项目仍然失败,但是出现了不同的错误。我会用这个错误更新这个问题,希望它能帮助找到一个共同的根本原因。 –