java.lang.ClassNotFoundException: org.eclipse.swt.SWTError
A problem seems introduced by https://github.com/eclipse/jifa/pull/68, @jasonk000 could you take a look at this issue?
The following exception occurred when start-up Jifa worker.
org.eclipse.core.runtime.CoreException: Plug-in org.eclipse.mat.ui was unable to load class org.eclipse.mat.ui.snapshot.actions.CopyActions$Address.
at org.eclipse.core.internal.registry.osgi.RegistryStrategyOSGI.throwException(RegistryStrategyOSGI.java:212)
at org.eclipse.core.internal.registry.osgi.RegistryStrategyOSGI.createExecutableExtension(RegistryStrategyOSGI.java:198)
at org.eclipse.core.internal.registry.ExtensionRegistry.createExecutableExtension(ExtensionRegistry.java:920)
at org.eclipse.core.internal.registry.ConfigurationElement.createExecutableExtension(ConfigurationElement.java:246)
at org.eclipse.core.internal.registry.ConfigurationElementHandle.createExecutableExtension(ConfigurationElementHandle.java:63)
at org.eclipse.mat.query.registry.QueryRegistry.createDelegate(QueryRegistry.java:84)
at org.eclipse.mat.query.registry.QueryRegistry.createDelegate(QueryRegistry.java:1)
at org.eclipse.mat.util.RegistryReader.addExtension(RegistryReader.java:79)
at org.eclipse.mat.util.RegistryReader.init(RegistryReader.java:64)
at org.eclipse.mat.query.registry.QueryRegistry.<init>(QueryRegistry.java:76)
at org.eclipse.mat.query.registry.QueryRegistry.<clinit>(QueryRegistry.java:67)
at org.eclipse.mat.query.registry.CommandLine.parse(CommandLine.java:108)
at org.eclipse.mat.snapshot.query.SnapshotQuery.parse(SnapshotQuery.java:151)
at org.eclipse.jifa.hda.impl.HeapDumpAnalyzerImpl.queryByCommand(HeapDumpAnalyzerImpl.java:214)
at org.eclipse.jifa.hda.impl.HeapDumpAnalyzerImpl.queryByCommand(HeapDumpAnalyzerImpl.java:195)
at org.eclipse.jifa.hda.impl.HeapDumpAnalyzerImpl.lambda$getBigObjects$14(HeapDumpAnalyzerImpl.java:413)
at org.eclipse.jifa.hda.impl.HeapDumpAnalyzerImpl.$(HeapDumpAnalyzerImpl.java:162)
at org.eclipse.jifa.hda.impl.HeapDumpAnalyzerImpl.getBigObjects(HeapDumpAnalyzerImpl.java:412)
at org.eclipse.jifa.worker.route.heapdump.OverviewRoute.biggestObjects(OverviewRoute.java:31)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:566)
at org.eclipse.jifa.worker.route.RouteFiller.lambda$registerMethodRoute$0(RouteFiller.java:130)
at io.vertx.ext.web.impl.BlockingHandlerDecorator.lambda$handle$0(BlockingHandlerDecorator.java:48)
at io.vertx.core.impl.ContextImpl.lambda$null$0(ContextImpl.java:160)
at io.vertx.core.impl.AbstractContext.dispatch(AbstractContext.java:96)
at io.vertx.core.impl.ContextImpl.lambda$executeBlocking$1(ContextImpl.java:158)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
at java.base/java.lang.Thread.run(Thread.java:834)
Caused by: java.lang.ClassNotFoundException: An error occurred while automatically activating bundle org.eclipse.mat.ui (172).
at org.eclipse.osgi.internal.hooks.EclipseLazyStarter.postFindLocalClass(EclipseLazyStarter.java:126)
at org.eclipse.osgi.internal.loader.classpath.ClasspathManager.findLocalClass(ClasspathManager.java:572)
at org.eclipse.osgi.internal.loader.ModuleClassLoader.findLocalClass(ModuleClassLoader.java:346)
at org.eclipse.osgi.internal.loader.BundleLoader.findLocalClass(BundleLoader.java:398)
at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:477)
at org.eclipse.osgi.internal.loader.ModuleClassLoader.loadClass(ModuleClassLoader.java:171)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)
at org.eclipse.osgi.internal.framework.EquinoxBundle.loadClass(EquinoxBundle.java:616)
at org.eclipse.core.internal.registry.osgi.RegistryStrategyOSGI.createExecutableExtension(RegistryStrategyOSGI.java:196)
... 30 more
Caused by: org.osgi.framework.BundleException: Error starting module. osgi.identity; osgi.identity="org.eclipse.mat.ui"; type="osgi.bundle"; version:Version="1.12.0.202107200255"; singleton:="true" [id=172]
at org.eclipse.osgi.container.Module.doStart(Module.java:614)
at org.eclipse.osgi.container.Module.start(Module.java:468)
at org.eclipse.osgi.framework.util.SecureAction.start(SecureAction.java:506)
at org.eclipse.osgi.internal.hooks.EclipseLazyStarter.postFindLocalClass(EclipseLazyStarter.java:117)
... 38 more
Caused by: java.lang.NoClassDefFoundError: org/eclipse/ui/plugin/AbstractUIPlugin
at java.base/java.lang.ClassLoader.defineClass1(Native Method)
at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1016)
at org.eclipse.osgi.internal.loader.ModuleClassLoader.defineClass(ModuleClassLoader.java:294)
at org.eclipse.osgi.internal.loader.classpath.ClasspathManager.defineClass(ClasspathManager.java:718)
at org.eclipse.osgi.internal.loader.classpath.ClasspathManager.findClassImpl(ClasspathManager.java:641)
at org.eclipse.osgi.internal.loader.classpath.ClasspathManager.findLocalClassImpl(ClasspathManager.java:609)
at org.eclipse.osgi.internal.loader.classpath.ClasspathManager.findLocalClassImpl(ClasspathManager.java:589)
at org.eclipse.osgi.internal.loader.classpath.ClasspathManager.findLocalClass(ClasspathManager.java:568)
at org.eclipse.osgi.internal.loader.ModuleClassLoader.findLocalClass(ModuleClassLoader.java:346)
at org.eclipse.osgi.internal.loader.BundleLoader.findLocalClass(BundleLoader.java:398)
at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:477)
at org.eclipse.osgi.internal.framework.BundleContextImpl.loadBundleActivator(BundleContextImpl.java:796)
at org.eclipse.osgi.internal.framework.BundleContextImpl.start(BundleContextImpl.java:749)
at org.eclipse.osgi.internal.framework.EquinoxBundle.startWorker0(EquinoxBundle.java:1011)
at org.eclipse.osgi.internal.framework.EquinoxBundle$EquinoxModule.startWorker(EquinoxBundle.java:365)
at org.eclipse.osgi.container.Module.doStart(Module.java:605)
... 41 more
Caused by: java.lang.ClassNotFoundException: An error occurred while automatically activating bundle org.eclipse.ui.workbench (18).
at org.eclipse.osgi.internal.hooks.EclipseLazyStarter.postFindLocalClass(EclipseLazyStarter.java:126)
at org.eclipse.osgi.internal.loader.classpath.ClasspathManager.findLocalClass(ClasspathManager.java:572)
at org.eclipse.osgi.internal.loader.ModuleClassLoader.findLocalClass(ModuleClassLoader.java:346)
at org.eclipse.osgi.internal.loader.BundleLoader.findLocalClass(BundleLoader.java:398)
at org.eclipse.osgi.internal.loader.sources.SingleSourcePackage.loadClass(SingleSourcePackage.java:41)
at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:456)
at org.eclipse.osgi.internal.loader.ModuleClassLoader.loadClass(ModuleClassLoader.java:171)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)
at org.eclipse.mat.hprof.HprofPlugin.getPreferenceStore(HprofPlugin.java:62)
at org.eclipse.mat.hprof.ui.PreferenceInitializer.initializeDefaultPreferences(PreferenceInitializer.java:29)
at org.eclipse.core.internal.preferences.PreferenceServiceRegistryHelper$1.run(PreferenceServiceRegistryHelper.java:307)
at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:45)
at org.eclipse.core.internal.preferences.PreferenceServiceRegistryHelper.runInitializer(PreferenceServiceRegistryHelper.java:310)
at org.eclipse.core.internal.preferences.PreferenceServiceRegistryHelper.applyRuntimeDefaults(PreferenceServiceRegistryHelper.java:134)
at org.eclipse.core.internal.preferences.PreferencesService.applyRuntimeDefaults(PreferencesService.java:374)
at org.eclipse.core.internal.preferences.DefaultPreferences.applyRuntimeDefaults(DefaultPreferences.java:225)
at org.eclipse.core.internal.preferences.DefaultPreferences.load(DefaultPreferences.java:279)
at org.eclipse.core.internal.preferences.EclipsePreferences.create(EclipsePreferences.java:370)
at org.eclipse.core.internal.preferences.EclipsePreferences.internalNode(EclipsePreferences.java:624)
at org.eclipse.core.internal.preferences.EclipsePreferences.node(EclipsePreferences.java:767)
at org.eclipse.core.internal.preferences.PreferencesService$5.run(PreferencesService.java:620)
at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:45)
at org.eclipse.core.internal.preferences.PreferencesService.getNodes(PreferencesService.java:600)
at org.eclipse.core.internal.preferences.PreferencesService.getString(PreferencesService.java:686)
at org.eclipse.mat.hprof.ui.HprofPreferences.getCurrentStrictness(HprofPreferences.java:43)
at org.eclipse.mat.hprof.HprofHeapObjectReader.open(HprofHeapObjectReader.java:54)
at org.eclipse.mat.parser.internal.SnapshotImpl.<init>(SnapshotImpl.java:397)
at org.eclipse.mat.parser.internal.SnapshotImpl.readFromFile(SnapshotImpl.java:239)
at org.eclipse.mat.parser.internal.SnapshotFactoryImpl.openSnapshot(SnapshotFactoryImpl.java:179)
at org.eclipse.mat.snapshot.SnapshotFactory.openSnapshot(SnapshotFactory.java:149)
at org.eclipse.jifa.hda.impl.HeapDumpAnalyzerImpl$ProviderImpl.lambda$provide$0(HeapDumpAnalyzerImpl.java:1834)
at org.eclipse.jifa.hda.impl.HeapDumpAnalyzerImpl.$(HeapDumpAnalyzerImpl.java:162)
at org.eclipse.jifa.hda.impl.HeapDumpAnalyzerImpl$ProviderImpl.provide(HeapDumpAnalyzerImpl.java:1834)
at org.eclipse.jifa.hdp.provider.MATProvider.provide(MATProvider.java:44)
at org.eclipse.jifa.worker.support.Analyzer.lambda$getOrBuildHeapDumpAnalyzer$0(Analyzer.java:83)
at org.eclipse.jifa.worker.support.Analyzer.getOrBuild(Analyzer.java:71)
at org.eclipse.jifa.worker.support.Analyzer.getOrBuildHeapDumpAnalyzer(Analyzer.java:82)
at org.eclipse.jifa.worker.support.Analyzer.analyze(Analyzer.java:118)
at org.eclipse.jifa.worker.route.AnalysisRoute.analyze(AnalysisRoute.java:50)
... 13 more
Caused by: org.osgi.framework.BundleException: Error starting module. osgi.identity; osgi.identity="org.eclipse.ui.workbench"; type="osgi.bundle"; version:Version="3.122.0.v20201122-1345"; singleton:="true" [id=18]
at org.eclipse.osgi.container.Module.doStart(Module.java:614)
at org.eclipse.osgi.container.Module.start(Module.java:468)
at org.eclipse.osgi.framework.util.SecureAction.start(SecureAction.java:506)
at org.eclipse.osgi.internal.hooks.EclipseLazyStarter.postFindLocalClass(EclipseLazyStarter.java:117)
... 51 more
Caused by: java.lang.NoClassDefFoundError: org/eclipse/swt/SWTError
at java.base/java.lang.Class.getDeclaredConstructors0(Native Method)
at java.base/java.lang.Class.privateGetDeclaredConstructors(Class.java:3138)
at java.base/java.lang.Class.getConstructor0(Class.java:3343)
at java.base/java.lang.Class.getConstructor(Class.java:2152)
at org.eclipse.osgi.internal.framework.BundleContextImpl.loadBundleActivator(BundleContextImpl.java:797)
at org.eclipse.osgi.internal.framework.BundleContextImpl.start(BundleContextImpl.java:749)
at org.eclipse.osgi.internal.framework.EquinoxBundle.startWorker0(EquinoxBundle.java:1011)
at org.eclipse.osgi.internal.framework.EquinoxBundle$EquinoxModule.startWorker(EquinoxBundle.java:365)
at org.eclipse.osgi.container.Module.doStart(Module.java:605)
... 54 more
Caused by: java.lang.ClassNotFoundException: org.eclipse.swt.SWTError cannot be found by org.eclipse.ui.workbench_3.122.0.v20201122-1345
at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:516)
at org.eclipse.osgi.internal.loader.ModuleClassLoader.loadClass(ModuleClassLoader.java:171)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)
... 63 more
By the way, we use the internal mirror of the Eclipse p2 repository for the build speed.
Not able to reproduce. I suspect your internal Eclipse mirror is missing or out of date JARs. Could you check the build process?
In https://github.com/eclipse/jifa/pull/62, I added some more dependencies for Eclipse SWT and Calcite.
Full list here: https://github.com/eclipse/jifa/blame/master/backend/heap-dump-analyzer/eclipse-mat-deps/build.gradle#L51-L82
=== With a fresh checkout to local machine, and then following:
$ cd frontend && npm run serve
In other window:
$ ./gradlew clean
$ ./gradlew buildWorker
$ cd demo
$ ./run_worker.sh
Browsing to http://localhost:8089 works ok.
Thanks, it seems that this problem only occurs in our internal version and is caused by our mirror repository. Close this issue.
It's a platform-related problem.
(reproduced in my MacBook m1)