clojure-lsp / clojure-lsp-intellij

Intellij Plugin for Clojure & ClojureScript development via Language Server (LSP) made in Clojure
https://clojure-lsp.io
MIT License
83 stars 6 forks source link

Incompatible with IntelliJ 2024 #43

Closed ericdallo closed 5 months ago

ericdallo commented 6 months ago

Intellij introduced a final method in the AnAction class which makes clojure gen-class compilation fail, the only way is to register the actions in run-time after the plugin is loaded.

com.intellij.diagnostic.PluginException: Cannot load class com.github.clojure_repl.intellij.action.LoadFile (
  error: class com.github.clojure_repl.intellij.action.LoadFile overrides final method com.intellij.openapi.actionSystem.AnAction.getTemplateText()Ljava/lang/String;,
  classLoader=PluginClassLoader(plugin=PluginDescriptor(name=Clojure REPL, id=com.github.clojure-repl, descriptorPath=plugin.xml, path=~/Library/Application Support/JetBrains/IdeaIC2024.1/plugins/clojure-repl, version=1.0.0, package=null, isBundled=false), packagePrefix=null, state=active)
)
    at com.intellij.ide.plugins.cl.PluginClassLoader.loadClassInsideSelf(PluginClassLoader.kt:331)
    at com.intellij.ide.plugins.cl.PluginClassLoader.tryLoadingClass(PluginClassLoader.kt:178)
    at com.intellij.serviceContainer.ComponentManagerImplKt.doLoadClass(ComponentManagerImpl.kt:1466)
    at com.intellij.serviceContainer.ComponentManagerImpl.instantiateClass(ComponentManagerImpl.kt:943)
    at com.intellij.openapi.actionSystem.impl.ActionManagerImplKt.instantiate(ActionManagerImpl.kt:1395)
    at com.intellij.openapi.actionSystem.impl.ActionManagerImplKt.convertStub(ActionManagerImpl.kt:1635)
    at com.intellij.openapi.actionSystem.impl.ActionManagerImplKt.getAction(ActionManagerImpl.kt:2117)
    at com.intellij.openapi.actionSystem.impl.ActionManagerImplKt.access$getAction(ActionManagerImpl.kt:1)
    at com.intellij.openapi.actionSystem.impl.ActionManagerImpl.getAction(ActionManagerImpl.kt:415)
    at com.intellij.openapi.keymap.impl.IdeKeyEventDispatcher.addActionsFromActiveKeymap(IdeKeyEventDispatcher.kt:664)
    at com.intellij.openapi.keymap.impl.IdeKeyEventDispatcher.updateCurrentContext(IdeKeyEventDispatcher.kt:643)
    at com.intellij.openapi.keymap.impl.IdeKeyEventDispatcher.inInitState(IdeKeyEventDispatcher.kt:427)
    at com.intellij.openapi.keymap.impl.IdeKeyEventDispatcher.dispatchKeyEvent(IdeKeyEventDispatcher.kt:302)
    at com.intellij.ide.IdeEventQueue.dispatchKeyEvent(IdeEventQueue.kt:622)
    at com.intellij.ide.IdeEventQueue._dispatchEvent$lambda$11(IdeEventQueue.kt:585)
    at com.intellij.openapi.application.impl.RwLockHolder.runWithEnabledImplicitRead(RwLockHolder.kt:138)
    at com.intellij.openapi.application.impl.RwLockHolder.runWithImplicitRead(RwLockHolder.kt:129)
    at com.intellij.ide.IdeEventQueue._dispatchEvent(IdeEventQueue.kt:585)
    at com.intellij.ide.IdeEventQueue.access$_dispatchEvent(IdeEventQueue.kt:77)
    at com.intellij.ide.IdeEventQueue$dispatchEvent$processEventRunnable$1$1$1.compute(IdeEventQueue.kt:362)
    at com.intellij.ide.IdeEventQueue$dispatchEvent$processEventRunnable$1$1$1.compute(IdeEventQueue.kt:361)
    at com.intellij.openapi.progress.impl.CoreProgressManager.computePrioritized(CoreProgressManager.java:843)
    at com.intellij.ide.IdeEventQueue$dispatchEvent$processEventRunnable$1$1.invoke(IdeEventQueue.kt:361)
    at com.intellij.ide.IdeEventQueue$dispatchEvent$processEventRunnable$1$1.invoke(IdeEventQueue.kt:356)
    at com.intellij.ide.IdeEventQueueKt.performActivity$lambda$1(IdeEventQueue.kt:1021)
    at com.intellij.openapi.application.TransactionGuardImpl.performActivity(TransactionGuardImpl.java:114)
    at com.intellij.ide.IdeEventQueueKt.performActivity(IdeEventQueue.kt:1021)
    at com.intellij.ide.IdeEventQueue.dispatchEvent$lambda$7(IdeEventQueue.kt:356)
    at com.intellij.openapi.application.impl.RwLockHolder.runIntendedWriteActionOnCurrentThread(RwLockHolder.kt:209)
    at com.intellij.openapi.application.impl.ApplicationImpl.runIntendedWriteActionOnCurrentThread(ApplicationImpl.java:830)
    at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.kt:398)
    at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:207)
    at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:128)
    at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:117)
    at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:113)
    at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:105)
    at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:92)
Caused by: java.lang.IncompatibleClassChangeError: class com.github.clojure_repl.intellij.action.LoadFile overrides final method com.intellij.openapi.actionSystem.AnAction.getTemplateText()Ljava/lang/String;
    at java.base/java.lang.ClassLoader.defineClass2(Native Method)
    at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1108)
    at com.intellij.util.lang.UrlClassLoader.consumeClassData(UrlClassLoader.java:291)
    at com.intellij.util.lang.ZipResourceFile.findClass(ZipResourceFile.java:116)
    at com.intellij.util.lang.JarLoader.findClass(JarLoader.java:58)
    at com.intellij.util.lang.ClassPath.findClassInLoader(ClassPath.java:240)
    at com.intellij.util.lang.ClassPath.findClass(ClassPath.java:190)
    at com.intellij.ide.plugins.cl.PluginClassLoader.loadClassInsideSelf(PluginClassLoader.kt:326)
    ... 36 more

Build: 241.14494.240 IC-2024.1