2017-06-29 57 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插件,我的測試項目仍然失敗,但是出現了不同的錯誤。我會用這個錯誤更新這個問題,希望它能幫助找到一個共同的根本原因。 –