TheBlob42 / idea-which-key

IdeaVim extension that displays available keybindings in a popup
GNU General Public License v3.0
171 stars 12 forks source link

Crash when invoked in Android Studio Iguana #64

Closed msundin closed 5 months ago

msundin commented 5 months ago

The Which-Key plugin crashes when invoked in latest Android Studio version - Iguana. Not just on the latest patch of Android Studio Iguana (2023.2.1 Patch 2) but on all Iguana versions.

All plugins, including IdeaVIM, updated to the latest versions available for Android Studio.

Android Studio Version, System info, installed plugins etc:

Android Studio Iguana | 2023.2.1 Patch 2
Build #AI-232.10300.40.2321.11668458, built on April 4, 2024
Runtime version: 17.0.9+0-17.0.9b1087.7-11185874 aarch64
VM: OpenJDK 64-Bit Server VM by JetBrains s.r.o.
macOS 14.4.1
GC: G1 Young Generation, G1 Old Generation
Memory: 8192M
Cores: 12
Metal Rendering is ON
Registry:
    debugger.watches.in.variables=false
    debugger.new.tool.window.layout=true
    ide.instant.shutdown=false
    ide.experimental.ui=true
    cidr.max.intellisense.file.length=1000000

Non-Bundled Plugins:
    com.github.catppuccin.jetbrains (3.2.3)
    org.franciscode.moonlight-jetbrains-theme (1.5)
    com.markskelton.one-dark-theme (5.10.0)
    com.github.rmehri01.onenord (0.1.2)
    com.intellij.marketplace (232.10300.41)
    com.arcticicestudio.nord.jetbrains (0.13.0)
    com.jensteichert.themes.nightowl (1.1)
    Key Promoter X (2024.1.0)
    wu.seal.tool.jsontokotlin (3.7.4)
    AceJump (3.8.19)
    idea.plugin.protoeditor (232.10300.51)
    com.samdark.intellij-visual-studio-code-dark-plus (2.8)
    youngstead.relative-line-numbers (1.1.1)
    monokai-pro (1.10)
    IdeaVIM (2.7.5)
    org.jetbrains.IdeaVim-EasyMotion (1.10)
    eu.theblob42.idea.whichkey (0.10.0)
    SequenceDiagram (3.0.8)
    com.github.copilot (1.5.2.5345)

Crash log 1/2:

java.lang.NoClassDefFoundError: com/maddyhome/idea/vim/action/change/LazyVimCommand
    at eu.theblob42.idea.whichkey.config.MappingConfig.extractVimActions(MappingConfig.kt:71)
    at eu.theblob42.idea.whichkey.config.MappingConfig.extractVimActions(MappingConfig.kt:66)
    at eu.theblob42.idea.whichkey.config.MappingConfig.<clinit>(MappingConfig.kt:48)
    at eu.theblob42.idea.whichkey.WhichKeyTypeActionHandler.beforeExecute(WhichKeyTypeActionHandler.kt:53)
    at com.intellij.openapi.editor.actionSystem.TypedAction.beforeActionPerformed(TypedAction.java:193)
    at com.intellij.openapi.editor.impl.EditorImpl.processKeyTypedImmediately(EditorImpl.java:1334)
    at com.intellij.openapi.editor.impl.EditorImpl.processKeyTyped(EditorImpl.java:1319)
    at com.intellij.openapi.editor.impl.EditorImpl.processKeyTyped(EditorImpl.java:3537)
    at com.intellij.openapi.editor.impl.EditorImpl$7.keyTyped(EditorImpl.java:1158)
    at java.desktop/java.awt.AWTEventMulticaster.keyTyped(Unknown Source)
    at java.desktop/java.awt.AWTEventMulticaster.keyTyped(Unknown Source)
    at java.desktop/java.awt.AWTEventMulticaster.keyTyped(Unknown Source)
    at java.desktop/java.awt.Component.processKeyEvent(Unknown Source)
    at java.desktop/javax.swing.JComponent.processKeyEvent(Unknown Source)
    at java.desktop/java.awt.Component.processEvent(Unknown Source)
    at java.desktop/java.awt.Container.processEvent(Unknown Source)
    at java.desktop/java.awt.Component.dispatchEventImpl(Unknown Source)
    at java.desktop/java.awt.Container.dispatchEventImpl(Unknown Source)
    at java.desktop/java.awt.Component.dispatchEvent(Unknown Source)
    at java.desktop/java.awt.KeyboardFocusManager.redispatchEvent(Unknown Source)
    at java.desktop/java.awt.DefaultKeyboardFocusManager.dispatchKeyEvent(Unknown Source)
    at java.desktop/java.awt.DefaultKeyboardFocusManager.preDispatchKeyEvent(Unknown Source)
    at java.desktop/java.awt.DefaultKeyboardFocusManager.typeAheadAssertions(Unknown Source)
    at java.desktop/java.awt.DefaultKeyboardFocusManager.dispatchEvent(Unknown Source)
    at com.intellij.ide.IdeKeyboardFocusManager.access$dispatchEvent$s1569605750(IdeKeyboardFocusManager.kt:18)
    at com.intellij.ide.IdeKeyboardFocusManager$dispatchEvent$1.invoke(IdeKeyboardFocusManager.kt:25)
    at com.intellij.ide.IdeKeyboardFocusManager$dispatchEvent$1.invoke(IdeKeyboardFocusManager.kt:25)
    at com.intellij.ide.IdeEventQueueKt.performActivity$lambda$1(IdeEventQueue.kt:997)
    at com.intellij.openapi.application.TransactionGuardImpl.performActivity(TransactionGuardImpl.java:105)
    at com.intellij.ide.IdeEventQueueKt.performActivity(IdeEventQueue.kt:997)
    at com.intellij.ide.IdeKeyboardFocusManager.dispatchEvent(IdeKeyboardFocusManager.kt:25)
    at java.desktop/java.awt.Component.dispatchEventImpl(Unknown Source)
    at java.desktop/java.awt.Container.dispatchEventImpl(Unknown Source)
    at java.desktop/java.awt.Window.dispatchEventImpl(Unknown Source)
    at java.desktop/java.awt.Component.dispatchEvent(Unknown Source)
    at java.desktop/java.awt.EventQueue.dispatchEventImpl(Unknown Source)
    at java.desktop/java.awt.EventQueue$3.run(Unknown Source)
    at java.desktop/java.awt.EventQueue$3.run(Unknown Source)
    at java.base/java.security.AccessController.doPrivileged(Unknown Source)
    at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
    at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
    at java.desktop/java.awt.EventQueue$4.run(Unknown Source)
    at java.desktop/java.awt.EventQueue$4.run(Unknown Source)
    at java.base/java.security.AccessController.doPrivileged(Unknown Source)
    at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
    at java.desktop/java.awt.EventQueue.dispatchEvent(Unknown Source)
    at com.intellij.ide.IdeEventQueue.defaultDispatchEvent(IdeEventQueue.kt:690)
    at com.intellij.ide.IdeEventQueue.dispatchKeyEvent(IdeEventQueue.kt:625)
    at com.intellij.ide.IdeEventQueue._dispatchEvent(IdeEventQueue.kt:591)
    at com.intellij.ide.IdeEventQueue.access$_dispatchEvent(IdeEventQueue.kt:67)
    at com.intellij.ide.IdeEventQueue$dispatchEvent$processEventRunnable$1$1$1.compute(IdeEventQueue.kt:369)
    at com.intellij.ide.IdeEventQueue$dispatchEvent$processEventRunnable$1$1$1.compute(IdeEventQueue.kt:368)
    at com.intellij.openapi.progress.impl.CoreProgressManager.computePrioritized(CoreProgressManager.java:787)
    at com.intellij.ide.IdeEventQueue$dispatchEvent$processEventRunnable$1$1.invoke(IdeEventQueue.kt:368)
    at com.intellij.ide.IdeEventQueue$dispatchEvent$processEventRunnable$1$1.invoke(IdeEventQueue.kt:363)
    at com.intellij.ide.IdeEventQueueKt.performActivity$lambda$1(IdeEventQueue.kt:997)
    at com.intellij.openapi.application.TransactionGuardImpl.performActivity(TransactionGuardImpl.java:113)
    at com.intellij.ide.IdeEventQueueKt.performActivity(IdeEventQueue.kt:997)
    at com.intellij.ide.IdeEventQueue.dispatchEvent$lambda$7(IdeEventQueue.kt:363)
    at com.intellij.openapi.application.impl.ApplicationImpl.runIntendedWriteActionOnCurrentThread(ApplicationImpl.java:861)
    at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.kt:405)
    at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
    at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
    at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
    at java.desktop/java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    at java.desktop/java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    at java.desktop/java.awt.EventDispatchThread.run(Unknown Source)
Caused by: java.lang.ClassNotFoundException: com.maddyhome.idea.vim.action.change.LazyVimCommand PluginClassLoader(plugin=PluginDescriptor(name=Which-Key, id=eu.theblob42.idea.whichkey, descriptorPath=plugin.xml, path=~/Library/Application Support/Google/AndroidStudio2023.2/plugins/IDEA_Which-Key-0.10.0.jar, version=0.10.0, package=null, isBundled=false), packagePrefix=null, state=active)
    at com.intellij.ide.plugins.cl.PluginClassLoader.loadClass(PluginClassLoader.kt:156)
    at java.base/java.lang.ClassLoader.loadClass(Unknown Source)
    ... 67 more

Crash log 2/2:

java.lang.NoClassDefFoundError: Could not initialize class eu.theblob42.idea.whichkey.config.MappingConfig
    at eu.theblob42.idea.whichkey.WhichKeyTypeActionHandler.beforeExecute(WhichKeyTypeActionHandler.kt:53)
    at com.intellij.openapi.editor.actionSystem.TypedAction.beforeActionPerformed(TypedAction.java:193)
    at com.intellij.openapi.editor.impl.EditorImpl.processKeyTypedImmediately(EditorImpl.java:1334)
    at com.intellij.openapi.editor.impl.EditorImpl.processKeyTyped(EditorImpl.java:1319)
    at com.intellij.openapi.editor.impl.EditorImpl.processKeyTyped(EditorImpl.java:3537)
    at com.intellij.openapi.editor.impl.EditorImpl$7.keyTyped(EditorImpl.java:1158)
    at java.desktop/java.awt.AWTEventMulticaster.keyTyped(Unknown Source)
    at java.desktop/java.awt.AWTEventMulticaster.keyTyped(Unknown Source)
    at java.desktop/java.awt.AWTEventMulticaster.keyTyped(Unknown Source)
    at java.desktop/java.awt.Component.processKeyEvent(Unknown Source)
    at java.desktop/javax.swing.JComponent.processKeyEvent(Unknown Source)
    at java.desktop/java.awt.Component.processEvent(Unknown Source)
    at java.desktop/java.awt.Container.processEvent(Unknown Source)
    at java.desktop/java.awt.Component.dispatchEventImpl(Unknown Source)
    at java.desktop/java.awt.Container.dispatchEventImpl(Unknown Source)
    at java.desktop/java.awt.Component.dispatchEvent(Unknown Source)
    at java.desktop/java.awt.KeyboardFocusManager.redispatchEvent(Unknown Source)
    at java.desktop/java.awt.DefaultKeyboardFocusManager.dispatchKeyEvent(Unknown Source)
    at java.desktop/java.awt.DefaultKeyboardFocusManager.preDispatchKeyEvent(Unknown Source)
    at java.desktop/java.awt.DefaultKeyboardFocusManager.typeAheadAssertions(Unknown Source)
    at java.desktop/java.awt.DefaultKeyboardFocusManager.dispatchEvent(Unknown Source)
    at com.intellij.ide.IdeKeyboardFocusManager.access$dispatchEvent$s1569605750(IdeKeyboardFocusManager.kt:18)
    at com.intellij.ide.IdeKeyboardFocusManager$dispatchEvent$1.invoke(IdeKeyboardFocusManager.kt:25)
    at com.intellij.ide.IdeKeyboardFocusManager$dispatchEvent$1.invoke(IdeKeyboardFocusManager.kt:25)
    at com.intellij.ide.IdeEventQueueKt.performActivity$lambda$1(IdeEventQueue.kt:997)
    at com.intellij.openapi.application.TransactionGuardImpl.performActivity(TransactionGuardImpl.java:105)
    at com.intellij.ide.IdeEventQueueKt.performActivity(IdeEventQueue.kt:997)
    at com.intellij.ide.IdeKeyboardFocusManager.dispatchEvent(IdeKeyboardFocusManager.kt:25)
    at java.desktop/java.awt.Component.dispatchEventImpl(Unknown Source)
    at java.desktop/java.awt.Container.dispatchEventImpl(Unknown Source)
    at java.desktop/java.awt.Window.dispatchEventImpl(Unknown Source)
    at java.desktop/java.awt.Component.dispatchEvent(Unknown Source)
    at java.desktop/java.awt.EventQueue.dispatchEventImpl(Unknown Source)
    at java.desktop/java.awt.EventQueue$3.run(Unknown Source)
    at java.desktop/java.awt.EventQueue$3.run(Unknown Source)
    at java.base/java.security.AccessController.doPrivileged(Unknown Source)
    at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
    at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
    at java.desktop/java.awt.EventQueue$4.run(Unknown Source)
    at java.desktop/java.awt.EventQueue$4.run(Unknown Source)
    at java.base/java.security.AccessController.doPrivileged(Unknown Source)
    at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
    at java.desktop/java.awt.EventQueue.dispatchEvent(Unknown Source)
    at com.intellij.ide.IdeEventQueue.defaultDispatchEvent(IdeEventQueue.kt:690)
    at com.intellij.ide.IdeEventQueue.dispatchKeyEvent(IdeEventQueue.kt:625)
    at com.intellij.ide.IdeEventQueue._dispatchEvent(IdeEventQueue.kt:591)
    at com.intellij.ide.IdeEventQueue.access$_dispatchEvent(IdeEventQueue.kt:67)
    at com.intellij.ide.IdeEventQueue$dispatchEvent$processEventRunnable$1$1$1.compute(IdeEventQueue.kt:369)
    at com.intellij.ide.IdeEventQueue$dispatchEvent$processEventRunnable$1$1$1.compute(IdeEventQueue.kt:368)
    at com.intellij.openapi.progress.impl.CoreProgressManager.computePrioritized(CoreProgressManager.java:787)
    at com.intellij.ide.IdeEventQueue$dispatchEvent$processEventRunnable$1$1.invoke(IdeEventQueue.kt:368)
    at com.intellij.ide.IdeEventQueue$dispatchEvent$processEventRunnable$1$1.invoke(IdeEventQueue.kt:363)
    at com.intellij.ide.IdeEventQueueKt.performActivity$lambda$1(IdeEventQueue.kt:997)
    at com.intellij.openapi.application.TransactionGuardImpl.performActivity(TransactionGuardImpl.java:113)
    at com.intellij.ide.IdeEventQueueKt.performActivity(IdeEventQueue.kt:997)
    at com.intellij.ide.IdeEventQueue.dispatchEvent$lambda$7(IdeEventQueue.kt:363)
    at com.intellij.openapi.application.impl.ApplicationImpl.runIntendedWriteActionOnCurrentThread(ApplicationImpl.java:861)
    at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.kt:405)
    at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
    at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
    at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
    at java.desktop/java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    at java.desktop/java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    at java.desktop/java.awt.EventDispatchThread.run(Unknown Source)
Caused by: java.lang.ExceptionInInitializerError: Exception java.lang.NoClassDefFoundError: com/maddyhome/idea/vim/action/change/LazyVimCommand [in thread "AWT-EventQueue-0"]
    at eu.theblob42.idea.whichkey.config.MappingConfig.extractVimActions(MappingConfig.kt:71)
    at eu.theblob42.idea.whichkey.config.MappingConfig.extractVimActions(MappingConfig.kt:66)
    at eu.theblob42.idea.whichkey.config.MappingConfig.<clinit>(MappingConfig.kt:48)
    ... 64 more
TheBlob42 commented 5 months ago

Same issue as #63 See also the breaking change marked in the CHANGELOG.md

TLDR: You need to update the IdeaVim plugin

msundin commented 5 months ago

Thanks for the answer. The problem is that IdeaVIM 2.7.5 is that latest that is available for Android Studio. Even if I choose the EAP repo for IdeaVIM plugin. Any workaround?

TheBlob42 commented 5 months ago

I did not know that. In that case you have to revert to a previous version of Which-Key. I don't know if this is possible via the marketplace, but you can always download the release from Github and install it manually.

msundin commented 5 months ago

Thanks for the tip! Downgraded Which-Key to 0.9.0 via GitHub and it works with latest Android Studio 👌

TheBlob42 commented 5 months ago

Glad that it helped :slightly_smiling_face:

msundin commented 5 months ago

Just want to inform that in the latest version of Android Studio, version Android Studio Jellyfish | 2023.3.1 that was just released, version 2.11.0-eap.2 of the IdeaVim plugin is now available to upgrade to. And when the IdeaVim plugin is upgraded, the latest version of the Which-Key plugin, 0.10.1 also works 🎉