seb
09/21/2023, 1:14 PMseb
09/22/2023, 8:27 AMcompose-util
module, and moving the int-ui
modules out of the themes
group, since we won't support Darcula in standalone mode and the only theme we plan to support in standalone for now is Int UI. The release might contain large refactorings and other API changes, but we don't know yet how many. Anything that doesn't end up in 0.7.0 will be moved around for 0.8.0 (ETA Oct 20th)seb
09/22/2023, 11:57 AMTomasz Glab
09/22/2023, 5:32 PMkotlinx-coroutines-core
and Java Class loaders. As I am already struggling with it for a longer while, I wonder whether you could help me.
Error is as follows: (full error in the attachment, as Slack has characters limit in a message)
2023-09-22 18:27:50,396 [ 4108] SEVERE - #c.i.o.a.i.CoroutineExceptionHandlerImpl - Unhandled exception in [CoroutineName(org.jetbrains.plugins.bsp.flow.open.BspStartupActivity), StandaloneCoroutine{Cancelling}@52cf8609, Dispatchers.Default]
java.lang.LinkageError: loader constraint violation: when resolving method 'kotlin.coroutines.CoroutineContext com.intellij.openapi.application.CoroutinesKt.getEDT(kotlinx.coroutines.Dispatchers)' the class loader com.intellij.ide.plugins.cl.PluginClassLoader @165caf33 of the current class, org/jetbrains/plugins/bsp/ui/widgets/tool/window/all/targets/BspAllTargetsWidgetFactoryKt, and the class loader com.intellij.util.lang.PathClassLoader @6f79caec for the method's defining class, com/intellij/openapi/application/CoroutinesKt, have different Class objects for the type kotlinx/coroutines/Dispatchers used in the signature (org.jetbrains.plugins.bsp.ui.widgets.tool.window.all.targets.BspAllTargetsWidgetFactoryKt is in unnamed module of loader com.intellij.ide.plugins.cl.PluginClassLoader @165caf33, parent loader 'bootstrap'; com.intellij.openapi.application.CoroutinesKt is in unnamed module of loader com.intellij.util.lang.PathClassLoader @6f79caec)
at org.jetbrains.plugins.bsp.ui.widgets.tool.window.all.targets.BspAllTargetsWidgetFactoryKt.registerBspToolWindow(BspAllTargetsWidgetFactory.kt:42)
at org.jetbrains.plugins.bsp.flow.open.BspStartupActivity.doRunActivity(BspStartupActivity.kt:50)
at org.jetbrains.plugins.bsp.flow.open.BspStartupActivity.execute(BspStartupActivity.kt:45)
at com.intellij.ide.startup.impl.StartupManagerImplKt$launchActivity$1$1.invokeSuspend(StartupManagerImpl.kt:534)
at com.intellij.ide.startup.impl.StartupManagerImplKt$launchActivity$1$1.invoke(StartupManagerImpl.kt)
at com.intellij.ide.startup.impl.StartupManagerImplKt$launchActivity$1$1.invoke(StartupManagerImpl.kt)
at kotlinx.coroutines.intrinsics.UndispatchedKt.startUndispatchedOrReturn(Undispatched.kt:78)
at kotlinx.coroutines.BuildersKt__Builders_commonKt.withContext(Builders.common.kt:167)
at kotlinx.coroutines.BuildersKt.withContext(Unknown Source)
at com.intellij.ide.startup.impl.StartupManagerImplKt$launchActivity$1.invokeSuspend(StartupManagerImpl.kt:532)
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:106)
at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:584)
at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:793)
at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:697)
at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:684)
2023-09-22 18:27:50,401 [ 4113] SEVERE - #c.i.o.a.i.CoroutineExceptionHandlerImpl - IntelliJ IDEA 2023.2 RC Build #IC-232.8660.142
2023-09-22 18:27:50,402 [ 4114] SEVERE - #c.i.o.a.i.CoroutineExceptionHandlerImpl - JDK: 17.0.7; VM: OpenJDK 64-Bit Server VM; Vendor: JetBrains s.r.o.
2023-09-22 18:27:50,402 [ 4114] SEVERE - #c.i.o.a.i.CoroutineExceptionHandlerImpl - OS: Linux
2023-09-22 18:27:50,404 [ 4116] SEVERE - #c.i.o.a.i.CoroutineExceptionHandlerImpl - Plugin to blame: Build Server Protocol version: 2023.2.0-EAP
Exception in thread "DefaultDispatcher-worker-28" java.lang.LinkageError: loader constraint violation: when resolving method 'kotlin.coroutines.CoroutineContext com.intellij.openapi.application.CoroutinesKt.getEDT(kotlinx.coroutines.Dispatchers)' the class loader com.intellij.ide.plugins.cl.PluginClassLoader @165caf33 of the current class, org/jetbrains/plugins/bsp/ui/widgets/tool/window/all/targets/BspAllTargetsWidgetFactoryKt, and the class loader com.intellij.util.lang.PathClassLoader @6f79caec for the method's defining class, com/intellij/openapi/application/CoroutinesKt, have different Class objects for the type kotlinx/coroutines/Dispatchers used in the signature (org.jetbrains.plugins.bsp.ui.widgets.tool.window.all.targets.BspAllTargetsWidgetFactoryKt is in unnamed module of loader com.intellij.ide.plugins.cl.PluginClassLoader @165caf33, parent loader 'bootstrap'; com.intellij.openapi.application.CoroutinesKt is in unnamed module of loader com.intellij.util.lang.PathClassLoader @6f79caec)
at org.jetbrains.plugins.bsp.ui.widgets.tool.window.all.targets.BspAllTargetsWidgetFactoryKt.registerBspToolWindow(BspAllTargetsWidgetFactory.kt:42)
at org.jetbrains.plugins.bsp.flow.open.BspStartupActivity.doRunActivity(BspStartupActivity.kt:50)
at org.jetbrains.plugins.bsp.flow.open.BspStartupActivity.execute(BspStartupActivity.kt:45)
at com.intellij.ide.startup.impl.StartupManagerImplKt$launchActivity$1$1.invokeSuspend(StartupManagerImpl.kt:534)
at com.intellij.ide.startup.impl.StartupManagerImplKt$launchActivity$1$1.invoke(StartupManagerImpl.kt)
at com.intellij.ide.startup.impl.StartupManagerImplKt$launchActivity$1$1.invoke(StartupManagerImpl.kt)
at kotlinx.coroutines.intrinsics.UndispatchedKt.startUndispatchedOrReturn(Undispatched.kt:78)
at kotlinx.coroutines.BuildersKt__Builders_commonKt.withContext(Builders.common.kt:167)
at kotlinx.coroutines.BuildersKt.withContext(Unknown Source)
at com.intellij.ide.startup.impl.StartupManagerImplKt$launchActivity$1.invokeSuspend(StartupManagerImpl.kt:532)
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:106)
at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:584)
at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:793)
at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:697)
at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:684)
Suppressed: kotlinx.coroutines.internal.DiagnosticCoroutineContextException: [CoroutineName(org.jetbrains.plugins.bsp.flow.open.BspStartupActivity), StandaloneCoroutine{Cancelling}@52cf8609, Dispatchers.Default]
2023-09-22 18:27:55,584 [ 9296] WARN - #c.i.u.x.Binding - no accessors for com.intellij.ide.util.TipsUsageManager$State
2023-09-22 18:30:27,052 [ 160764] WARN - #c.i.u.x.Binding - no accessors for com.intellij.openapi.projectRoots.Sdk
2023-09-22 18:30:27,062 [ 160774] WARN - #c.i.u.x.Binding - no accessors for java.time.LocalTime
2023-09-22 18:30:27,248 [ 160960] WARN - #c.i.o.p.i.ProjectManagerImpl - Failed to publish projectClosing(project) event
java.lang.RuntimeException: Cannot invoke (class=ProjectClosingListener, method=projectClosing, topic=ProjectManagerListener)
at com.intellij.util.messages.impl.MessageBusImplKt.invokeListener(MessageBusImpl.kt:676)
...
at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:92)
Caused by: com.intellij.diagnostic.PluginException: Cannot load class kotlinx.coroutines.CoroutineScope (
error: loader constraint violation: loader com.intellij.ide.plugins.cl.PluginClassLoader @165caf33 wants to load interface kotlinx.coroutines.CoroutineScope. A different interface with the same name was previously loaded by com.intellij.util.lang.PathClassLoader @6f79caec. (kotlinx.coroutines.CoroutineScope is in unnamed module of loader com.intellij.util.lang.PathClassLoader @6f79caec),
classLoader=PluginClassLoader(plugin=PluginDescriptor(name=Build Server Protocol, id=org.jetbrains.bsp, descriptorPath=plugin.xml, path=~/JetBrains/intellij-bsp/build/idea-sandbox/plugins/intellij-bsp, version=2023.2.0-EAP, package=null, isBundled=false), packagePrefix=null, state=active)
)
at com.intellij.ide.plugins.cl.PluginClassLoader.loadClassInsideSelf(PluginClassLoader.kt
...
I wanted to have 2 UI tool windows simultaneously, the one being with the old implementation and the new a implemented with Jewel. I wanted to use DemoToolWindow from Jewel IDE-sample. I included necessary dependencies and got this error. To be exact I included in dependecies:
libs.versions.toml
[versions]
...
jewel = "0.6.3"
[libraries]
...
jewelComposeUtils = {module = "org.jetbrains.jewel:jewel-compose-utils", version.ref = "jewel" }
jewelCore = {module = "org.jetbrains.jewel:jewel-core", version.ref = "jewel" }
jewelIdeLafBridge = {module = "org.jetbrains.jewel:jewel-ide-laf-bridge", version.ref = "jewel" }
From what I understand the error arises because Intellij Platform comes bundled with different version of kotlinx-coroutines-core than Jewel uses. As our "old" UI uses
import com.intellij.openapi.application.EDT
import kotlinx.coroutines.Dispatchers
...
withContext(Dispatchers.EDT) {...}
Do you have any ideas how to overcome this issue?HIGAN
10/23/2023, 2:58 AMTobias
12/04/2023, 3:14 PM'long org.jetbrains.skiko.MetalApiKt.chooseAdapter(int)''
Tomasz Głąb
12/06/2023, 10:39 AM2023-11-30 16:06:42,627 [ 2523] WARN - #c.i.i.u.l.LafManagerImpl - VersionControl.Log.Commit.rowHeight = null in LookAndFeelThemeAdapter; it may lead to performance degradation
2023-11-30 16:06:42,873 [ 2769] WARN - #c.i.s.ComponentManagerImpl - com.intellij.psi.search.FilenameIndex initializer requests com.intellij.ide.plugins.PluginUtil instance
2023-11-30 16:06:45,510 [ 5406] WARN - #c.i.s.ComponentManagerImpl - com.intellij.psi.LanguageSubstitutors initializer requests com.intellij.psi.LanguageSubstitutors instance
2023-11-30 16:06:45,527 [ 5423] WARN - #c.i.s.ComponentManagerImpl - org.zmlx.hg4idea.provider.HgChangeProvider initializer requests com.intellij.openapi.vcs.FileStatusFactory instance
2023-11-30 16:07:05,836 [ 25732] WARN - JewelBridge - Color with key "*.focusColor" not found, fallback to 'Color.Unspecified'
2023-11-30 16:07:05,837 [ 25733] WARN - JewelBridge - Color with key "*.infoForeground" not found, fallback to 'Color.Unspecified'
2023-11-30 16:07:05,850 [ 25746] WARN - JewelBridge - Color with key "*.focusColor" not found, fallback to 'Color.Unspecified'
2023-11-30 16:07:05,850 [ 25746] WARN - JewelBridge - Color with key "*.infoForeground" not found, fallback to 'Color.Unspecified'
2023-11-30 16:07:05,861 [ 25757] WARN - JewelBridge - Color with key "MenuItem.disabledBackground" not found, fallback to 'Color.Unspecified'
2023-11-30 16:07:05,862 [ 25758] WARN - JewelBridge - Color with key "PopupMenu.disabledForeground" not found, fallback to 'Color.Unspecified'
2023-11-30 16:07:05,881 [ 25777] WARN - JewelBridge - Color with key "ProgressIcon.color" not found, fallback to 'Color.Unspecified'
2. Is there a way to render an icon using the one implementing the javax.swing.Icon
interface? Icon class (in our case BspPluginIcons) loads them by:
val bsp = IconLoader.getIcon("/icons/bsp.svg", BspPluginIcons::class.java)
Later in demo is showed that it can be used by providing the path once again like:
Icon(resource = "icons/bsp.svg", iconClass = BspPluginIcons::class.java, contentDescription = null)
The question can be rewritten as: is there any way I can use the BspPluginIcons.bsp to render an icon with compose?
3. I needed to update the Style of the tree, here is how I did it:
val iconFolderPainter = bridgePainterProvider("nodes/folder.svg") // <- using bridgePainterProvider like this throws a warning
return LazyTreeStyle(
colors = JewelTheme.Companion.treeStyle.colors,
metrics = JewelTheme.Companion.treeStyle.metrics,
icons = LazyTreeIcons(
chevronCollapsed = iconFolderPainter,
chevronExpanded = iconFolderPainter,
chevronSelectedCollapsed = iconFolderPainter,
chevronSelectedExpanded = iconFolderPainter,
)
)
By that i get the warning:
2023-12-06 11:14:41,821 [ 8863] SEVERE - #c.i.u.SlowOperations - Slow operations are prohibited on EDT. See SlowOperations.assertSlowOperationsAreAllowed javadoc.
java.lang.Throwable: Slow operations are prohibited on EDT. See SlowOperations.assertSlowOperationsAreAllowed javadoc.
at com.intellij.openapi.diagnostic.Logger.error(Logger.java:376)
at com.intellij.util.SlowOperations.assertSlowOperationsAreAllowed(SlowOperations.java:101)
at com.intellij.workspaceModel.core.fileIndex.impl.WorkspaceFileIndexDataImpl.ensureIsUpToDate(WorkspaceFileIndexDataImpl.kt:130)
at com.intellij.workspaceModel.core.fileIndex.impl.WorkspaceFileIndexDataImpl.getFileInfo(WorkspaceFileIndexDataImpl.kt:75)
at com.intellij.workspaceModel.core.fileIndex.impl.WorkspaceFileIndexImpl.getFileInfo(WorkspaceFileIndexImpl.kt:247)
at com.intellij.openapi.roots.impl.ProjectFileIndexImpl.isUnderIgnored(ProjectFileIndexImpl.java:73)
at com.intellij.openapi.roots.impl.ProjectFileIndexFacade.isUnderIgnored(ProjectFileIndexFacade.java:71)
at com.intellij.psi.impl.file.impl.FileManagerImpl.isExcludedOrIgnored(FileManagerImpl.java:419)
at com.intellij.psi.impl.file.impl.FileManagerImpl.findDirectoryImpl(FileManagerImpl.java:405)
at com.intellij.psi.impl.file.impl.FileManagerImpl.findDirectory(FileManagerImpl.java:398)
at com.intellij.psi.impl.PsiManagerImpl.findDirectory(PsiManagerImpl.java:175)
at com.intellij.psi.AbstractFileViewProvider.shouldCreatePsi(AbstractFileViewProvider.java:89)
at com.intellij.psi.SingleRootFileViewProvider.createFile(SingleRootFileViewProvider.java:144)
at com.intellij.psi.SingleRootFileViewProvider.getPsiInner(SingleRootFileViewProvider.java:101)
at com.intellij.psi.AbstractFileViewProvider.getPsi(AbstractFileViewProvider.java:185)
at com.intellij.psi.impl.file.impl.FileManagerImpl.areViewProvidersEquivalent(FileManagerImpl.java:535)
at com.intellij.psi.impl.file.impl.FileManagerImpl.shouldResurrect(FileManagerImpl.java:632)
at com.intellij.psi.impl.file.impl.FileManagerImpl.evaluateValidity(FileManagerImpl.java:600)
at com.intellij.psi.impl.file.impl.FileManagerImpl.findCachedViewProvider(FileManagerImpl.java:224)
at com.intellij.psi.impl.file.impl.FileManagerImpl.getCachedPsiFileInner(FileManagerImpl.java:461)
at com.intellij.psi.impl.file.impl.FileManagerImpl.getCachedPsiFile(FileManagerImpl.java:377)
at com.intellij.psi.impl.PsiDocumentManagerBase.getCachedPsiFile(PsiDocumentManagerBase.java:146)
at com.intellij.psi.impl.PsiDocumentManagerBase.getCachedPsiFile(PsiDocumentManagerBase.java:128)
at com.intellij.psi.impl.PsiDocumentManagerBase.getPsiFile(PsiDocumentManagerBase.java:91)
at com.intellij.psi.impl.PsiDocumentManagerImpl.getPsiFile(PsiDocumentManagerImpl.java:63)
at org.jetbrains.plugins.scala.worksheet.actions.WorksheetFileHook$WorksheetDumbModeListener.$anonfun$initializeButtons$1(WorksheetFileHook.scala:211)
at org.jetbrains.plugins.scala.worksheet.actions.WorksheetFileHook$WorksheetDumbModeListener.$anonfun$initializeButtons$1$adapted(WorksheetFileHook.scala:210)
at scala.Option.foreach(Option.scala:437)
at org.jetbrains.plugins.scala.worksheet.actions.WorksheetFileHook$WorksheetDumbModeListener.initializeButtons(WorksheetFileHook.scala:210)
at org.jetbrains.plugins.scala.worksheet.actions.WorksheetFileHook$WorksheetDumbModeListener.exitDumbMode(WorksheetFileHook.scala:206)
at com.intellij.util.messages.impl.MessageBusImplKt.invokeMethod(MessageBusImpl.kt:697)
at com.intellij.util.messages.impl.MessageBusImplKt.invokeListener(MessageBusImpl.kt:664)
at com.intellij.util.messages.impl.MessageBusImplKt.deliverMessage(MessageBusImpl.kt:423)
at com.intellij.util.messages.impl.MessageBusImplKt.pumpWaiting(MessageBusImpl.kt:402)
at com.intellij.util.messages.impl.MessageBusImplKt.access$pumpWaiting(MessageBusImpl.kt:1)
at com.intellij.util.messages.impl.MessagePublisher.invoke(MessageBusImpl.kt:461)
at jdk.proxy2/jdk.proxy2.$Proxy63.exitDumbMode(Unknown Source)
at com.intellij.openapi.project.DumbServiceImpl.publishDumbModeChangedEvent$lambda$7(DumbServiceImpl.kt:250)
at com.intellij.openapi.project.DumbServiceImpl$Companion.runCatchingIgnorePCE(DumbServiceImpl.kt:578)
at com.intellij.openapi.project.DumbServiceImpl$Companion.access$runCatchingIgnorePCE(DumbServiceImpl.kt:561)
at com.intellij.openapi.project.DumbServiceImpl.publishDumbModeChangedEvent(DumbServiceImpl.kt:250)
at com.intellij.openapi.project.DumbServiceImpl.access$publishDumbModeChangedEvent(DumbServiceImpl.kt:48)
at com.intellij.openapi.project.DumbServiceImpl$decrementDumbCounter$3.invokeSuspend(DumbServiceImpl.kt:227)
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:108)
at com.intellij.openapi.application.impl.DispatchedRunnable.run(DispatchedRunnable.kt:43)
at com.intellij.openapi.application.TransactionGuardImpl.runWithWritingAllowed(TransactionGuardImpl.java:209)
at com.intellij.openapi.application.TransactionGuardImpl.access$100(TransactionGuardImpl.java:22)
at com.intellij.openapi.application.TransactionGuardImpl$1.run(TransactionGuardImpl.java:191)
at com.intellij.openapi.application.impl.ApplicationImpl.runIntendedWriteActionOnCurrentThread(ApplicationImpl.java:843)
at com.intellij.openapi.application.impl.ApplicationImpl$4.run(ApplicationImpl.java:463)
at com.intellij.openapi.application.impl.RwLockHolder.runWithEnabledImplicitRead(RwLockHolder.kt:75)
at com.intellij.openapi.application.impl.RwLockHolder.runWithImplicitRead(RwLockHolder.kt:67)
at com.intellij.openapi.application.impl.ApplicationImpl.runWithImplicitRead(ApplicationImpl.java:1430)
at com.intellij.openapi.application.impl.FlushQueue.doRun(FlushQueue.java:82)
at com.intellij.openapi.application.impl.FlushQueue.runNextEvent(FlushQueue.java:124)
at com.intellij.openapi.application.impl.FlushQueue.flushNow(FlushQueue.java:44)
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.openapi.application.impl.ApplicationImpl.runIntendedWriteActionOnCurrentThread(ApplicationImpl.java:848)
at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.kt:391)
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)
Am I doing something wrong, or reading the icon should be somehow optimised in the future?seb
12/06/2023, 4:26 PMseb
12/06/2023, 4:26 PMTobias
12/07/2023, 6:47 AM