jifa icon indicating copy to clipboard operation
jifa copied to clipboard

java.lang.ClassNotFoundException: org.eclipse.swt.SWTError

Open D-D-H opened this issue 4 years ago • 4 comments

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

D-D-H avatar Sep 06 '21 03:09 D-D-H

By the way, we use the internal mirror of the Eclipse p2 repository for the build speed.

D-D-H avatar Sep 06 '21 03:09 D-D-H

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.

jasonk000 avatar Sep 07 '21 18:09 jasonk000

Thanks, it seems that this problem only occurs in our internal version and is caused by our mirror repository. Close this issue.

D-D-H avatar Sep 08 '21 01:09 D-D-H

It's a platform-related problem.

(reproduced in my MacBook m1)

D-D-H avatar Apr 19 '22 05:04 D-D-H