bzixilu / dotplugin

Dot language plugin for Intellij IDEA
55 stars 11 forks source link

Crash when click "TextEditorWithPreview" #41

Open LaoshuBaby opened 5 months ago

LaoshuBaby commented 5 months ago

Error log are pasted below:

com.intellij.diagnostic.PluginException: Cannot load class org.apache.batik.anim.dom.SVGOMDocument (
  error: org/w3c/dom/svg/SVGDocument,
  classLoader=PluginClassLoader(plugin=PluginDescriptor(name=DOT Language, id=org.plugin.dot.id, descriptorPath=plugin.xml, path=~\AppData\Roaming\JetBrains\PyCharmCE2023.3\plugins\dotplugin, version=1.5.3, 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.ide.plugins.cl.PluginClassLoader.loadClass(PluginClassLoader.kt:151)
    at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:525)
    at org.apache.batik.anim.dom.SVGDOMImplementation.createDocument(SVGDOMImplementation.java:140)
    at org.apache.batik.dom.util.SAXDocumentFactory.startElement(SAXDocumentFactory.java:641)
    at java.xml/com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.startElement(AbstractSAXParser.java:518)
    at java.xml/com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.scanStartElement(XMLNSDocumentScannerImpl.java:374)
    at java.xml/com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl$NSContentDriver.scanRootElementHook(XMLNSDocumentScannerImpl.java:613)
    at java.xml/com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:3079)
    at java.xml/com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$PrologDriver.next(XMLDocumentScannerImpl.java:836)
    at java.xml/com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:605)
    at java.xml/com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(XMLNSDocumentScannerImpl.java:112)
    at java.xml/com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:542)
    at java.xml/com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:889)
    at java.xml/com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:825)
    at java.xml/com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:141)
    at java.xml/com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1224)
    at java.xml/com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:637)
    at org.apache.batik.dom.util.SAXDocumentFactory.createDocument(SAXDocumentFactory.java:453)
    at org.apache.batik.dom.util.SAXDocumentFactory.createDocument(SAXDocumentFactory.java:357)
    at org.apache.batik.anim.dom.SAXSVGDocumentFactory.createDocument(SAXSVGDocumentFactory.java:255)
    at org.apache.batik.anim.dom.SAXSVGDocumentFactory.createDocument(SAXSVGDocumentFactory.java:317)
    at org.apache.batik.transcoder.XMLAbstractTranscoder.transcode(XMLAbstractTranscoder.java:119)
    at org.apache.batik.transcoder.SVGAbstractTranscoder.transcode(SVGAbstractTranscoder.java:158)
    at guru.nidi.graphviz.engine.BatikRasterizer.doRasterize(BatikRasterizer.java:44)
    at guru.nidi.graphviz.engine.SvgRasterizer.rasterize(SvgRasterizer.java:40)
    at guru.nidi.graphviz.engine.Renderer.toImage(Renderer.java:123)
    at guru.nidi.graphviz.engine.EngineResult.map(EngineResult.java:62)
    at guru.nidi.graphviz.engine.Renderer.toImage(Renderer.java:114)
    at guru.nidi.graphviz.engine.Renderer.toImage(Renderer.java:110)
    at org.plugin.dot.preview.GraphPreviewFileEditor$ImagePanel.paintGraph(GraphPreviewFileEditor.java:280)
    at org.plugin.dot.preview.GraphPreviewFileEditor$ImagePanel.paintComponent(GraphPreviewFileEditor.java:305)
    at java.desktop/javax.swing.JComponent.paint(JComponent.java:1115)
    at java.desktop/javax.swing.JComponent.paintChildren(JComponent.java:955)
    at java.desktop/javax.swing.JComponent.paint(JComponent.java:1124)
    at java.desktop/javax.swing.JComponent.paintChildren(JComponent.java:955)
    at java.desktop/javax.swing.JComponent.paint(JComponent.java:1124)
    at java.desktop/javax.swing.JComponent.paintChildren(JComponent.java:955)
    at java.desktop/javax.swing.JComponent.paint(JComponent.java:1124)
    at java.desktop/javax.swing.JLayeredPane.paint(JLayeredPane.java:586)
    at java.desktop/javax.swing.JComponent.paintChildren(JComponent.java:955)
    at java.desktop/javax.swing.JComponent.paint(JComponent.java:1124)
    at java.desktop/javax.swing.JComponent.paintChildren(JComponent.java:955)
    at java.desktop/javax.swing.JComponent.paint(JComponent.java:1124)
    at java.desktop/javax.swing.JComponent.paintChildren(JComponent.java:955)
    at java.desktop/javax.swing.JComponent.paint(JComponent.java:1124)
    at java.desktop/javax.swing.JComponent.paintChildren(JComponent.java:955)
    at java.desktop/javax.swing.JComponent.paint(JComponent.java:1124)
    at java.desktop/javax.swing.JComponent.paintToOffscreen(JComponent.java:5312)
    at java.desktop/javax.swing.RepaintManager$PaintManager.paintDoubleBufferedFPScales(RepaintManager.java:1732)
    at java.desktop/javax.swing.RepaintManager$PaintManager.paintDoubleBuffered(RepaintManager.java:1641)
    at java.desktop/javax.swing.RepaintManager$PaintManager.paint(RepaintManager.java:1580)
    at java.desktop/javax.swing.RepaintManager.paint(RepaintManager.java:1347)
    at java.desktop/javax.swing.JComponent._paintImmediately(JComponent.java:5260)
    at java.desktop/javax.swing.JComponent.paintImmediately(JComponent.java:5070)
    at java.desktop/javax.swing.RepaintManager$4.run(RepaintManager.java:882)
    at java.desktop/javax.swing.RepaintManager$4.run(RepaintManager.java:865)
    at java.base/java.security.AccessController.doPrivileged(AccessController.java:399)
    at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86)
    at java.desktop/javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:865)
    at java.desktop/javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:838)
    at java.desktop/javax.swing.RepaintManager.prePaintDirtyRegions(RepaintManager.java:787)
    at java.desktop/javax.swing.RepaintManager$ProcessingRunnable.run(RepaintManager.java:1909)
    at java.desktop/java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:318)
    at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:792)
    at java.desktop/java.awt.EventQueue$3.run(EventQueue.java:739)
    at java.desktop/java.awt.EventQueue$3.run(EventQueue.java:733)
    at java.base/java.security.AccessController.doPrivileged(AccessController.java:399)
    at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86)
    at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:761)
    at com.intellij.ide.IdeEventQueue.defaultDispatchEvent(IdeEventQueue.kt:695)
    at com.intellij.ide.IdeEventQueue._dispatchEvent$lambda$12(IdeEventQueue.kt:589)
    at com.intellij.openapi.application.impl.RwLockHolder.runWithoutImplicitRead(RwLockHolder.kt:44)
    at com.intellij.ide.IdeEventQueue._dispatchEvent(IdeEventQueue.kt:589)
    at com.intellij.ide.IdeEventQueue.access$_dispatchEvent(IdeEventQueue.kt:72)
    at com.intellij.ide.IdeEventQueue$dispatchEvent$processEventRunnable$1$1$1.compute(IdeEventQueue.kt:355)
    at com.intellij.ide.IdeEventQueue$dispatchEvent$processEventRunnable$1$1$1.compute(IdeEventQueue.kt:354)
    at com.intellij.openapi.progress.impl.CoreProgressManager.computePrioritized(CoreProgressManager.java:793)
    at com.intellij.ide.IdeEventQueue$dispatchEvent$processEventRunnable$1$1.invoke(IdeEventQueue.kt:354)
    at com.intellij.ide.IdeEventQueue$dispatchEvent$processEventRunnable$1$1.invoke(IdeEventQueue.kt:349)
    at com.intellij.ide.IdeEventQueueKt.performActivity$lambda$1(IdeEventQueue.kt:1014)
    at com.intellij.openapi.application.TransactionGuardImpl.performActivity(TransactionGuardImpl.java:106)
    at com.intellij.ide.IdeEventQueueKt.performActivity(IdeEventQueue.kt:1014)
    at com.intellij.ide.IdeEventQueue.dispatchEvent$lambda$7(IdeEventQueue.kt:349)
    at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.kt:386)
    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.NoClassDefFoundError: org/w3c/dom/svg/SVGDocument
    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:289)
    at com.intellij.util.lang.ZipResourceFile.findClass(ZipResourceFile.java:113)
    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)
    ... 91 more
Caused by: java.lang.ClassNotFoundException: org.w3c.dom.svg.SVGDocument PluginClassLoader(plugin=PluginDescriptor(name=DOT Language, id=org.plugin.dot.id, descriptorPath=plugin.xml, path=~\AppData\Roaming\JetBrains\PyCharmCE2023.3\plugins\dotplugin, version=1.5.3, 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(ClassLoader.java:525)
    ... 99 more
LaoshuBaby commented 5 months ago

screenshot-masked

Every click on this "TextEditorWithPreview" will cause a error, after that, the IDE became very laggy, and there would be unfreshed shadow when the mouse slides on any button. (That is, the UI will not be updated automatically, but will only be updated when the mouse slides, such as the menu of the new interface.)

I don’t have a diff for each error, but it looks roughly the same.

new UI menu

My PyCharm version is this:

PyCharm 2023.3.2 (Community Edition)
Build #PC-233.13135.95, built on December 19, 2023
Runtime version: 17.0.9+7-b1087.9 amd64
VM: OpenJDK 64-Bit Server VM by JetBrains s.r.o.
Windows 11.0
GC: G1 Young Generation, G1 Old Generation
Memory: 3986M
Cores: 24
Registry:
  ide.experimental.ui=true
  ide.await.scope.completion=false
Non-Bundled Plugins:
  com.github.copilot (1.4.12.4386)
  com.intellij.zh (233.199)
  me.lensvol.blackconnect (0.6.1)
  com.wakatime.intellij.plugin (14.3.10)
  Docker (233.13135.108)
  intellij-micropython (1.4.0)

I don't know if this has to do with my dot files, they were generated by pyreverse, I picked a shorter one and posted it here

digraph "classes" {
rankdir=BT
charset="utf-8"
"src.yuheng.basic.model.Base" [color="black", fontcolor="black", label=<{Base|action : Optional[str]<br ALIGN="LEFT"/>changeset : Optional[int]<br ALIGN="LEFT"/>id : int<br ALIGN="LEFT"/>tags : Dict[str, str]<br ALIGN="LEFT"/>timestamp : Optional[str]<br ALIGN="LEFT"/>uid : Optional[int]<br ALIGN="LEFT"/>user : Optional[str]<br ALIGN="LEFT"/>version : Optional[int]<br ALIGN="LEFT"/>visible : bool<br ALIGN="LEFT"/>|<I>flush</I>()<br ALIGN="LEFT"/>is_limit_valid()<br ALIGN="LEFT"/>}>, shape="record", style="solid"];
"src.yuheng.basic.model.BaseOsmModel" [color="black", fontcolor="black", label=<{BaseOsmModel|action : Optional[str]<br ALIGN="LEFT"/>changeset : Optional[int]<br ALIGN="LEFT"/>id : int<br ALIGN="LEFT"/>tags : Dict[str, str]<br ALIGN="LEFT"/>timestamp : Optional[str]<br ALIGN="LEFT"/>uid : Optional[int]<br ALIGN="LEFT"/>user : Optional[str]<br ALIGN="LEFT"/>version : Optional[int]<br ALIGN="LEFT"/>visible : bool<br ALIGN="LEFT"/>|has_diff(): bool<br ALIGN="LEFT"/>has_tag_diff(): bool<br ALIGN="LEFT"/>print_diff()<br ALIGN="LEFT"/>}>, shape="record", style="solid"];
"src.yuheng.type.constraint.Bounds" [color="black", fontcolor="black", label=<{Bounds|max_lat : float<br ALIGN="LEFT"/>max_lon : float<br ALIGN="LEFT"/>min_lat : float<br ALIGN="LEFT"/>min_lon : float<br ALIGN="LEFT"/>origin : str<br ALIGN="LEFT"/>|<I>bound_deserialization</I>(serialize_format)<br ALIGN="LEFT"/>bound_serialization(serialize_format, escape): str<br ALIGN="LEFT"/>}>, shape="record", style="solid"];
"src.yuheng.method.diff.Diff" [color="black", fontcolor="black", label=<{Diff|diff_pair_dict : list<br ALIGN="LEFT"/>|<I>print</I>()<br ALIGN="LEFT"/>print_diff()<br ALIGN="LEFT"/>}>, shape="record", style="solid"];
"src.yuheng.type.constraint.Member" [color="black", fontcolor="black", label=<{Member|id : NoneType<br ALIGN="LEFT"/>ref : NoneType<br ALIGN="LEFT"/>role : str<br ALIGN="LEFT"/>type : str<br ALIGN="LEFT"/>|has_diff(): bool<br ALIGN="LEFT"/>}>, shape="record", style="solid"];
"src.yuheng.type.element.Node" [color="black", fontcolor="black", label=<{Node|lat : float<br ALIGN="LEFT"/>lon : float<br ALIGN="LEFT"/>upstream_relation : list<br ALIGN="LEFT"/>upstream_way : list<br ALIGN="LEFT"/>|<I>find_history</I>()<br ALIGN="LEFT"/><I>find_latest</I>()<br ALIGN="LEFT"/><I>get_tag_all</I>()<br ALIGN="LEFT"/><I>get_tag_query</I>()<br ALIGN="LEFT"/>get_upstream_relation(order)<br ALIGN="LEFT"/>get_upstream_way(order)<br ALIGN="LEFT"/>has_diff(): bool<br ALIGN="LEFT"/>is_latest(version)<br ALIGN="LEFT"/>is_limit_valid()<br ALIGN="LEFT"/>}>, shape="record", style="solid"];
"src.yuheng.type.data.OSC" [color="black", fontcolor="black", label=<{OSC|<br ALIGN="LEFT"/>|<I>Create</I>()<br ALIGN="LEFT"/><I>Delete</I>()<br ALIGN="LEFT"/><I>Modify</I>()<br ALIGN="LEFT"/>}>, shape="record", style="solid"];
"src.yuheng.type.data.OSH" [color="black", fontcolor="black", label=<{OSH|<br ALIGN="LEFT"/>|}>, shape="record", style="solid"];
"src.yuheng.type.data.OSM" [color="black", fontcolor="black", label=<{OSM|<br ALIGN="LEFT"/>|}>, shape="record", style="solid"];
"src.yuheng.type.element.Relation" [color="black", fontcolor="black", label=<{Relation|members : List[Member]<br ALIGN="LEFT"/>upstream_relation : list<br ALIGN="LEFT"/>|<I>get_tag_all</I>()<br ALIGN="LEFT"/><I>get_tag_query</I>()<br ALIGN="LEFT"/>get_upstream_relation(order)<br ALIGN="LEFT"/>has_diff(): bool<br ALIGN="LEFT"/>is_limit_valid()<br ALIGN="LEFT"/>}>, shape="record", style="solid"];
"src.yuheng.Waifu" [color="black", fontcolor="black", label=<{Waifu|bounds_list : List[Bounds]<br ALIGN="LEFT"/>generator : str<br ALIGN="LEFT"/>node_dict : Dict[int, Node]<br ALIGN="LEFT"/>relation_dict : Dict[int, Relation]<br ALIGN="LEFT"/>version : str<br ALIGN="LEFT"/>way_dict : Dict[int, Way]<br ALIGN="LEFT"/>|<I>clip</I>(): 'Waifu'<br ALIGN="LEFT"/><I>flush</I>(id: str): None<br ALIGN="LEFT"/>meow()<br ALIGN="LEFT"/>new_node_id(): int<br ALIGN="LEFT"/>new_relation_id(): int<br ALIGN="LEFT"/>new_way_id(): int<br ALIGN="LEFT"/>read(mode, file_path, text, url, fpath, data_driver)<br ALIGN="LEFT"/>read_file(file_path: str)<br ALIGN="LEFT"/>read_memory(text: str)<br ALIGN="LEFT"/>read_network(source, endpoint, quantity)<br ALIGN="LEFT"/>read_network_area(S, W, N, E, source, endpoint)<br ALIGN="LEFT"/>read_network_element()<br ALIGN="LEFT"/>read_network_element_multi(element_id, mode, server)<br ALIGN="LEFT"/>read_network_element_single(element_id: str, type, source, endpoint)<br ALIGN="LEFT"/>write(mode, file_path, data_driver)<br ALIGN="LEFT"/>write_file(file_path: str, only_diff)<br ALIGN="LEFT"/><I>write_josm_remote_control</I>()<br ALIGN="LEFT"/><I>write_network</I>()<br ALIGN="LEFT"/>}>, shape="record", style="solid"];
"src.yuheng.type.element.Way" [color="black", fontcolor="black", label=<{Way|nds : List[int]<br ALIGN="LEFT"/>upstream_relation : list<br ALIGN="LEFT"/>|<I>get_tag_all</I>()<br ALIGN="LEFT"/><I>get_tag_query</I>()<br ALIGN="LEFT"/>get_upstream_relation(order)<br ALIGN="LEFT"/>has_diff(): bool<br ALIGN="LEFT"/>is_limit_valid()<br ALIGN="LEFT"/><I>reverse</I>(): 'Way'<br ALIGN="LEFT"/>}>, shape="record", style="solid"];
"src.yuheng.type.element.Node" -> "src.yuheng.basic.model.BaseOsmModel" [arrowhead="empty", arrowtail="none"];
"src.yuheng.type.element.Relation" -> "src.yuheng.basic.model.BaseOsmModel" [arrowhead="empty", arrowtail="none"];
"src.yuheng.type.element.Way" -> "src.yuheng.basic.model.BaseOsmModel" [arrowhead="empty", arrowtail="none"];
}