eclipse.jdt.ls icon indicating copy to clipboard operation
eclipse.jdt.ls copied to clipboard

jdt.ls 1.9.0 breaks workspace loading

Open jeffmaury opened this issue 3 years ago • 9 comments

I have performed the following actions:

  • installed latest 2022-03 (using Eclipse installer)
  • installed jdt.ls (latest 1.9.0)

Opened a new workspace: OK Reopened the workspace: KO, Eclipse does not launch, dialog is shown to look at .log

jeffmaury avatar Mar 15 '22 08:03 jeffmaury

@jeffmaury could you, please, try the latest snapshot - https://download.eclipse.org/jdtls/snapshots/repository/1.10.0.202203160029/

snjeza avatar Mar 17 '22 17:03 snjeza

Using https://download.eclipse.org/jdtls/snapshots/repository/1.10.0.202203160029/ . I saw an error notification popup on shutdown regarding "Problems saving the workspace".

Plug-in org.eclipse.jdt.ls.core was unable to load class org.eclipse.jdt.ls.core.internal.filesystem.JLSFileSystem

stacktrace
!ENTRY org.eclipse.osgi 4 0 2022-03-17 14:49:18.496
!MESSAGE An error occurred while automatically activating bundle org.eclipse.jdt.ls.core (295).
!STACK 0
org.osgi.framework.BundleException: Exception in org.eclipse.jdt.ls.core.internal.JavaLanguageServerPlugin.start() of bundle org.eclipse.jdt.ls.core.
	at org.eclipse.osgi.internal.framework.BundleContextImpl.startActivator(BundleContextImpl.java:834)
	at org.eclipse.osgi.internal.framework.BundleContextImpl.start(BundleContextImpl.java:762)
	at org.eclipse.osgi.internal.framework.EquinoxBundle.startWorker0(EquinoxBundle.java:1032)
	at org.eclipse.osgi.internal.framework.EquinoxBundle$EquinoxModule.startWorker(EquinoxBundle.java:371)
	at org.eclipse.osgi.container.Module.doStart(Module.java:605)
	at org.eclipse.osgi.container.Module.start(Module.java:468)
	at org.eclipse.osgi.framework.util.SecureAction.start(SecureAction.java:513)
	at org.eclipse.osgi.internal.hooks.EclipseLazyStarter.postFindLocalClass(EclipseLazyStarter.java:117)
	at org.eclipse.osgi.internal.loader.classpath.ClasspathManager.findLocalClass(ClasspathManager.java:570)
	at org.eclipse.osgi.internal.loader.ModuleClassLoader.findLocalClass(ModuleClassLoader.java:335)
	at org.eclipse.osgi.internal.loader.BundleLoader.findLocalClass(BundleLoader.java:397)
	at org.eclipse.osgi.internal.loader.BundleLoader.findClass0(BundleLoader.java:488)
	at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:416)
	at org.eclipse.osgi.internal.loader.ModuleClassLoader.loadClass(ModuleClassLoader.java:168)
	at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522)
	at org.eclipse.osgi.internal.framework.EquinoxBundle.loadClass(EquinoxBundle.java:622)
	at org.eclipse.core.internal.registry.osgi.RegistryStrategyOSGI.createExecutableExtension(RegistryStrategyOSGI.java:196)
	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.core.internal.filesystem.InternalFileSystemCore.getFileSystem(InternalFileSystemCore.java:73)
	at org.eclipse.core.internal.filesystem.InternalFileSystemCore.getLocalFileSystem(InternalFileSystemCore.java:92)
	at org.eclipse.core.filesystem.EFS.getLocalFileSystem(EFS.java:448)
	at org.eclipse.core.internal.localstore.FileSystemResourceManager.getHistoryStore(FileSystemResourceManager.java:508)
	at org.eclipse.core.internal.resources.SaveManager.save(SaveManager.java:1191)
	at org.eclipse.core.internal.resources.Workspace.save(Workspace.java:2356)
	at org.eclipse.ui.internal.ide.application.IDEWorkbenchAdvisor.lambda$1(IDEWorkbenchAdvisor.java:554)
	at org.eclipse.jface.operation.ModalContext$ModalContextThread.run(ModalContext.java:122)
Caused by: java.lang.NoClassDefFoundError: org/eclipse/m2e/core/internal/preferences/ProblemSeverity
	at org.eclipse.jdt.ls.core.internal.preferences.StandardPreferenceManager.initializeMavenPreferences(StandardPreferenceManager.java:62)
	at org.eclipse.jdt.ls.core.internal.preferences.StandardPreferenceManager.<init>(StandardPreferenceManager.java:46)
	at org.eclipse.jdt.ls.core.internal.JavaLanguageServerPlugin.start(JavaLanguageServerPlugin.java:184)
	at org.eclipse.osgi.internal.framework.BundleContextImpl$2.run(BundleContextImpl.java:813)
	at org.eclipse.osgi.internal.framework.BundleContextImpl$2.run(BundleContextImpl.java:1)
	at java.base/java.security.AccessController.doPrivileged(Native Method)
	at org.eclipse.osgi.internal.framework.BundleContextImpl.startActivator(BundleContextImpl.java:805)
	... 27 more
Caused by: java.lang.ClassNotFoundException: org.eclipse.m2e.core.internal.preferences.ProblemSeverity cannot be found by org.eclipse.jdt.ls.core_1.10.0.202203160029
	at org.eclipse.osgi.internal.loader.BundleLoader.generateException(BundleLoader.java:529)
	at org.eclipse.osgi.internal.loader.BundleLoader.findClass0(BundleLoader.java:524)
	at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:416)
	at org.eclipse.osgi.internal.loader.ModuleClassLoader.loadClass(ModuleClassLoader.java:168)
	at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522)
	... 34 more
Root exception:
java.lang.NoClassDefFoundError: org/eclipse/m2e/core/internal/preferences/ProblemSeverity
	at org.eclipse.jdt.ls.core.internal.preferences.StandardPreferenceManager.initializeMavenPreferences(StandardPreferenceManager.java:62)
	at org.eclipse.jdt.ls.core.internal.preferences.StandardPreferenceManager.<init>(StandardPreferenceManager.java:46)
	at org.eclipse.jdt.ls.core.internal.JavaLanguageServerPlugin.start(JavaLanguageServerPlugin.java:184)
	at org.eclipse.osgi.internal.framework.BundleContextImpl$2.run(BundleContextImpl.java:813)
	at org.eclipse.osgi.internal.framework.BundleContextImpl$2.run(BundleContextImpl.java:1)
	at java.base/java.security.AccessController.doPrivileged(Native Method)
	at org.eclipse.osgi.internal.framework.BundleContextImpl.startActivator(BundleContextImpl.java:805)
	at org.eclipse.osgi.internal.framework.BundleContextImpl.start(BundleContextImpl.java:762)
	at org.eclipse.osgi.internal.framework.EquinoxBundle.startWorker0(EquinoxBundle.java:1032)
	at org.eclipse.osgi.internal.framework.EquinoxBundle$EquinoxModule.startWorker(EquinoxBundle.java:371)
	at org.eclipse.osgi.container.Module.doStart(Module.java:605)
	at org.eclipse.osgi.container.Module.start(Module.java:468)
	at org.eclipse.osgi.framework.util.SecureAction.start(SecureAction.java:513)
	at org.eclipse.osgi.internal.hooks.EclipseLazyStarter.postFindLocalClass(EclipseLazyStarter.java:117)
	at org.eclipse.osgi.internal.loader.classpath.ClasspathManager.findLocalClass(ClasspathManager.java:570)
	at org.eclipse.osgi.internal.loader.ModuleClassLoader.findLocalClass(ModuleClassLoader.java:335)
	at org.eclipse.osgi.internal.loader.BundleLoader.findLocalClass(BundleLoader.java:397)
	at org.eclipse.osgi.internal.loader.BundleLoader.findClass0(BundleLoader.java:488)
	at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:416)
	at org.eclipse.osgi.internal.loader.ModuleClassLoader.loadClass(ModuleClassLoader.java:168)
	at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522)
	at org.eclipse.osgi.internal.framework.EquinoxBundle.loadClass(EquinoxBundle.java:622)
	at org.eclipse.core.internal.registry.osgi.RegistryStrategyOSGI.createExecutableExtension(RegistryStrategyOSGI.java:196)
	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.core.internal.filesystem.InternalFileSystemCore.getFileSystem(InternalFileSystemCore.java:73)
	at org.eclipse.core.internal.filesystem.InternalFileSystemCore.getLocalFileSystem(InternalFileSystemCore.java:92)
	at org.eclipse.core.filesystem.EFS.getLocalFileSystem(EFS.java:448)
	at org.eclipse.core.internal.localstore.FileSystemResourceManager.getHistoryStore(FileSystemResourceManager.java:508)
	at org.eclipse.core.internal.resources.SaveManager.save(SaveManager.java:1191)
	at org.eclipse.core.internal.resources.Workspace.save(Workspace.java:2356)
	at org.eclipse.ui.internal.ide.application.IDEWorkbenchAdvisor.lambda$1(IDEWorkbenchAdvisor.java:554)
	at org.eclipse.jface.operation.ModalContext$ModalContextThread.run(ModalContext.java:122)
Caused by: java.lang.ClassNotFoundException: org.eclipse.m2e.core.internal.preferences.ProblemSeverity cannot be found by org.eclipse.jdt.ls.core_1.10.0.202203160029
	at org.eclipse.osgi.internal.loader.BundleLoader.generateException(BundleLoader.java:529)
	at org.eclipse.osgi.internal.loader.BundleLoader.findClass0(BundleLoader.java:524)
	at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:416)
	at org.eclipse.osgi.internal.loader.ModuleClassLoader.loadClass(ModuleClassLoader.java:168)
	at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522)
	... 34 more

!ENTRY org.eclipse.ui.ide 4 4 2022-03-17 14:49:47.733
!MESSAGE Problems saving workspace

!ENTRY org.eclipse.ui.ide 4 1 2022-03-17 14:49:47.734
!MESSAGE Problems occurred while trying to save the state of the workbench.
!SUBENTRY 1 org.eclipse.ui.ide 4 1 2022-03-17 14:49:47.734
!MESSAGE Internal Error
!STACK 0
java.lang.Error: org.eclipse.core.runtime.CoreException: Plug-in org.eclipse.jdt.ls.core was unable to load class org.eclipse.jdt.ls.core.internal.filesystem.JLSFileSystem.
	at org.eclipse.core.internal.filesystem.InternalFileSystemCore.getLocalFileSystem(InternalFileSystemCore.java:95)
	at org.eclipse.core.filesystem.EFS.getLocalFileSystem(EFS.java:448)
	at org.eclipse.core.internal.localstore.FileSystemResourceManager.getHistoryStore(FileSystemResourceManager.java:508)
	at org.eclipse.core.internal.resources.SaveManager.save(SaveManager.java:1191)
	at org.eclipse.core.internal.resources.Workspace.save(Workspace.java:2356)
	at org.eclipse.ui.internal.ide.application.IDEWorkbenchAdvisor.lambda$1(IDEWorkbenchAdvisor.java:554)
	at org.eclipse.jface.operation.ModalContext$ModalContextThread.run(ModalContext.java:122)
Caused by: org.eclipse.core.runtime.CoreException: Plug-in org.eclipse.jdt.ls.core was unable to load class org.eclipse.jdt.ls.core.internal.filesystem.JLSFileSystem.
	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.core.internal.filesystem.InternalFileSystemCore.getFileSystem(InternalFileSystemCore.java:73)
	at org.eclipse.core.internal.filesystem.InternalFileSystemCore.getLocalFileSystem(InternalFileSystemCore.java:92)
	... 6 more
Caused by: java.lang.ClassNotFoundException: An error occurred while automatically activating bundle org.eclipse.jdt.ls.core (295).
	at org.eclipse.osgi.internal.hooks.EclipseLazyStarter.postFindLocalClass(EclipseLazyStarter.java:126)
	at org.eclipse.osgi.internal.loader.classpath.ClasspathManager.findLocalClass(ClasspathManager.java:570)
	at org.eclipse.osgi.internal.loader.ModuleClassLoader.findLocalClass(ModuleClassLoader.java:335)
	at org.eclipse.osgi.internal.loader.BundleLoader.findLocalClass(BundleLoader.java:397)
	at org.eclipse.osgi.internal.loader.BundleLoader.findClass0(BundleLoader.java:488)
	at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:416)
	at org.eclipse.osgi.internal.loader.ModuleClassLoader.loadClass(ModuleClassLoader.java:168)
	at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522)
	at org.eclipse.osgi.internal.framework.EquinoxBundle.loadClass(EquinoxBundle.java:622)
	at org.eclipse.core.internal.registry.osgi.RegistryStrategyOSGI.createExecutableExtension(RegistryStrategyOSGI.java:196)
	... 11 more
Caused by: org.osgi.framework.BundleException: Exception in org.eclipse.jdt.ls.core.internal.JavaLanguageServerPlugin.start() of bundle org.eclipse.jdt.ls.core.
	at org.eclipse.osgi.internal.framework.BundleContextImpl.startActivator(BundleContextImpl.java:834)
	at org.eclipse.osgi.internal.framework.BundleContextImpl.start(BundleContextImpl.java:762)
	at org.eclipse.osgi.internal.framework.EquinoxBundle.startWorker0(EquinoxBundle.java:1032)
	at org.eclipse.osgi.internal.framework.EquinoxBundle$EquinoxModule.startWorker(EquinoxBundle.java:371)
	at org.eclipse.osgi.container.Module.doStart(Module.java:605)
	at org.eclipse.osgi.container.Module.start(Module.java:468)
	at org.eclipse.osgi.framework.util.SecureAction.start(SecureAction.java:513)
	at org.eclipse.osgi.internal.hooks.EclipseLazyStarter.postFindLocalClass(EclipseLazyStarter.java:117)
	... 20 more
Caused by: java.lang.NoClassDefFoundError: org/eclipse/m2e/core/internal/preferences/ProblemSeverity
	at org.eclipse.jdt.ls.core.internal.preferences.StandardPreferenceManager.initializeMavenPreferences(StandardPreferenceManager.java:62)
	at org.eclipse.jdt.ls.core.internal.preferences.StandardPreferenceManager.<init>(StandardPreferenceManager.java:46)
	at org.eclipse.jdt.ls.core.internal.JavaLanguageServerPlugin.start(JavaLanguageServerPlugin.java:184)
	at org.eclipse.osgi.internal.framework.BundleContextImpl$2.run(BundleContextImpl.java:813)
	at org.eclipse.osgi.internal.framework.BundleContextImpl$2.run(BundleContextImpl.java:1)
	at java.base/java.security.AccessController.doPrivileged(Native Method)
	at org.eclipse.osgi.internal.framework.BundleContextImpl.startActivator(BundleContextImpl.java:805)
	... 27 more
Caused by: java.lang.ClassNotFoundException: org.eclipse.m2e.core.internal.preferences.ProblemSeverity cannot be found by org.eclipse.jdt.ls.core_1.10.0.202203160029
	at org.eclipse.osgi.internal.loader.BundleLoader.generateException(BundleLoader.java:529)
	at org.eclipse.osgi.internal.loader.BundleLoader.findClass0(BundleLoader.java:524)
	at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:416)
	at org.eclipse.osgi.internal.loader.ModuleClassLoader.loadClass(ModuleClassLoader.java:168)
	at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522)
	... 34 more

rgrunber avatar Mar 17 '22 18:03 rgrunber

~~As of 1.6.0 ( https://github.com/eclipse/eclipse.jdt.ls/pull/1900 ) we stopped generating those .project, .classpath files at the project root. In order to do that, we overrode the filesystem used for the file scheme.~~ Can't be this because the functionality is disabled by default though it is closely related.

Update : Ok, I think I found the root cause, a workaround, and a potential fix we need. org.eclipse.jdt.ls.core lists an optional requirement on m2e, but it seems like it should be a strict requirement. The plugin fails to start correctly because m2e isn't installed. Once you install M2E, and start up again, the problem should go away (went away for me). @jeffmaury Can you confirm this ?

@fbricon @testforstephen , any issue with making the m2e requirements strict (instead of optional) to support Jeff's use case ?

rgrunber avatar Mar 17 '22 19:03 rgrunber

I don't think this is the cause as I'm installing the EPP Java package which has M2E (so CRS where I discovered the bug). But will test

jeffmaury avatar Mar 18 '22 07:03 jeffmaury

@snjeza Got the same error using https://download.eclipse.org/jdtls/snapshots/repository/1.10.0.202203160029/

jeffmaury avatar Mar 18 '22 07:03 jeffmaury

With the Java EPP I see this :

stacktrace
Root exception:
java.lang.ExceptionInInitializerError
	at org.eclipse.jdt.core.JavaCore.getOptions(JavaCore.java:4439)
	at org.eclipse.jdt.ls.core.internal.preferences.PreferenceManager.initializeJavaCoreOptions(PreferenceManager.java:136)
	at org.eclipse.jdt.ls.core.internal.preferences.PreferenceManager.initialize(PreferenceManager.java:86)
	at org.eclipse.jdt.ls.core.internal.preferences.PreferenceManager.<init>(PreferenceManager.java:77)
	at org.eclipse.jdt.ls.core.internal.preferences.StandardPreferenceManager.<init>(StandardPreferenceManager.java:45)
	at org.eclipse.jdt.ls.core.internal.JavaLanguageServerPlugin.start(JavaLanguageServerPlugin.java:184)
	at org.eclipse.osgi.internal.framework.BundleContextImpl$2.run(BundleContextImpl.java:813)
	at org.eclipse.osgi.internal.framework.BundleContextImpl$2.run(BundleContextImpl.java:1)
	at java.base/java.security.AccessController.doPrivileged(AccessController.java:569)
	at org.eclipse.osgi.internal.framework.BundleContextImpl.startActivator(BundleContextImpl.java:805)
	at org.eclipse.osgi.internal.framework.BundleContextImpl.start(BundleContextImpl.java:762)
	at org.eclipse.osgi.internal.framework.EquinoxBundle.startWorker0(EquinoxBundle.java:1032)
	at org.eclipse.osgi.internal.framework.EquinoxBundle$EquinoxModule.startWorker(EquinoxBundle.java:371)
	at org.eclipse.osgi.container.Module.doStart(Module.java:605)
	at org.eclipse.osgi.container.Module.start(Module.java:468)
	at org.eclipse.osgi.framework.util.SecureAction.start(SecureAction.java:513)
	at org.eclipse.osgi.internal.hooks.EclipseLazyStarter.postFindLocalClass(EclipseLazyStarter.java:117)
	at org.eclipse.osgi.internal.loader.classpath.ClasspathManager.findLocalClass(ClasspathManager.java:570)
	at org.eclipse.osgi.internal.loader.ModuleClassLoader.findLocalClass(ModuleClassLoader.java:335)
	at org.eclipse.osgi.internal.loader.BundleLoader.findLocalClass(BundleLoader.java:397)
	at org.eclipse.osgi.internal.loader.BundleLoader.findClass0(BundleLoader.java:488)
	at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:416)
	at org.eclipse.osgi.internal.loader.ModuleClassLoader.loadClass(ModuleClassLoader.java:168)
	at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:520)
	at org.eclipse.osgi.internal.framework.EquinoxBundle.loadClass(EquinoxBundle.java:622)
	at org.eclipse.core.internal.registry.osgi.RegistryStrategyOSGI.createExecutableExtension(RegistryStrategyOSGI.java:196)
	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.core.internal.filesystem.InternalFileSystemCore.getFileSystem(InternalFileSystemCore.java:73)
	at org.eclipse.core.internal.filesystem.InternalFileSystemCore.getLocalFileSystem(InternalFileSystemCore.java:92)
	at org.eclipse.core.filesystem.EFS.getLocalFileSystem(EFS.java:448)
	at org.eclipse.core.internal.utils.FileUtil.realPath(FileUtil.java:92)
	at org.eclipse.core.internal.utils.FileUtil.realURI(FileUtil.java:184)
	at org.eclipse.core.internal.localstore.FileSystemResourceManager.setLocation(FileSystemResourceManager.java:1051)
	at org.eclipse.core.internal.localstore.FileSystemResourceManager.initializeStore(FileSystemResourceManager.java:614)
	at org.eclipse.core.internal.localstore.FileSystemResourceManager.read(FileSystemResourceManager.java:888)
	at org.eclipse.core.internal.resources.SaveManager.restoreMetaInfo(SaveManager.java:888)
	at org.eclipse.core.internal.resources.SaveManager.restoreMetaInfo(SaveManager.java:868)
	at org.eclipse.core.internal.resources.SaveManager.restore(SaveManager.java:724)
	at org.eclipse.core.internal.resources.SaveManager.startup(SaveManager.java:1555)
	at org.eclipse.core.internal.resources.Workspace.startup(Workspace.java:2482)
	at org.eclipse.core.internal.resources.Workspace.open(Workspace.java:2233)
	at org.eclipse.core.resources.ResourcesPlugin.start(ResourcesPlugin.java:475)
	at org.eclipse.osgi.internal.framework.BundleContextImpl$2.run(BundleContextImpl.java:813)
	at org.eclipse.osgi.internal.framework.BundleContextImpl$2.run(BundleContextImpl.java:1)
	at java.base/java.security.AccessController.doPrivileged(AccessController.java:569)
	at org.eclipse.osgi.internal.framework.BundleContextImpl.startActivator(BundleContextImpl.java:805)
	at org.eclipse.osgi.internal.framework.BundleContextImpl.start(BundleContextImpl.java:762)
	at org.eclipse.osgi.internal.framework.EquinoxBundle.startWorker0(EquinoxBundle.java:1032)
	at org.eclipse.osgi.internal.framework.EquinoxBundle$EquinoxModule.startWorker(EquinoxBundle.java:371)
	at org.eclipse.osgi.container.Module.doStart(Module.java:605)
	at org.eclipse.osgi.container.Module.start(Module.java:468)
	at org.eclipse.osgi.framework.util.SecureAction.start(SecureAction.java:513)
	at org.eclipse.osgi.internal.hooks.EclipseLazyStarter.postFindLocalClass(EclipseLazyStarter.java:117)
	at org.eclipse.osgi.internal.loader.classpath.ClasspathManager.findLocalClass(ClasspathManager.java:570)
	at org.eclipse.osgi.internal.loader.ModuleClassLoader.findLocalClass(ModuleClassLoader.java:335)
	at org.eclipse.osgi.internal.loader.BundleLoader.findLocalClass(BundleLoader.java:397)
	at org.eclipse.osgi.internal.loader.sources.SingleSourcePackage.loadClass(SingleSourcePackage.java:41)
	at org.eclipse.osgi.internal.loader.BundleLoader.findClass0(BundleLoader.java:484)
	at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:416)
	at org.eclipse.osgi.internal.loader.ModuleClassLoader.loadClass(ModuleClassLoader.java:168)
	at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:520)
	at java.base/java.lang.Class.getDeclaredConstructors0(Native Method)
	at java.base/java.lang.Class.privateGetDeclaredConstructors(Class.java:3373)
	at java.base/java.lang.Class.getConstructor0(Class.java:3578)
	at java.base/java.lang.Class.getConstructor(Class.java:2271)
	at org.eclipse.osgi.internal.framework.BundleContextImpl.loadBundleActivator(BundleContextImpl.java:796)
	at org.eclipse.osgi.internal.framework.BundleContextImpl.start(BundleContextImpl.java:748)
	at org.eclipse.osgi.internal.framework.EquinoxBundle.startWorker0(EquinoxBundle.java:1032)
	at org.eclipse.osgi.internal.framework.EquinoxBundle$EquinoxModule.startWorker(EquinoxBundle.java:371)
	at org.eclipse.osgi.container.Module.doStart(Module.java:605)
	at org.eclipse.osgi.container.Module.start(Module.java:468)
	at org.eclipse.osgi.framework.util.SecureAction.start(SecureAction.java:513)
	at org.eclipse.osgi.internal.hooks.EclipseLazyStarter.postFindLocalClass(EclipseLazyStarter.java:117)
	at org.eclipse.osgi.internal.loader.classpath.ClasspathManager.findLocalClass(ClasspathManager.java:570)
	at org.eclipse.osgi.internal.loader.ModuleClassLoader.findLocalClass(ModuleClassLoader.java:335)
	at org.eclipse.osgi.internal.loader.BundleLoader.findLocalClass(BundleLoader.java:397)
	at org.eclipse.osgi.internal.loader.sources.SingleSourcePackage.loadClass(SingleSourcePackage.java:41)
	at org.eclipse.osgi.internal.loader.BundleLoader.findClass0(BundleLoader.java:484)
	at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:416)
	at org.eclipse.osgi.internal.loader.ModuleClassLoader.loadClass(ModuleClassLoader.java:168)
	at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:520)
	at java.base/java.lang.Class.getDeclaredConstructors0(Native Method)
	at java.base/java.lang.Class.privateGetDeclaredConstructors(Class.java:3373)
	at java.base/java.lang.Class.getConstructor0(Class.java:3578)
	at java.base/java.lang.Class.getConstructor(Class.java:2271)
	at org.eclipse.osgi.internal.framework.BundleContextImpl.loadBundleActivator(BundleContextImpl.java:796)
	at org.eclipse.osgi.internal.framework.BundleContextImpl.start(BundleContextImpl.java:748)
	at org.eclipse.osgi.internal.framework.EquinoxBundle.startWorker0(EquinoxBundle.java:1032)
	at org.eclipse.osgi.internal.framework.EquinoxBundle$EquinoxModule.startWorker(EquinoxBundle.java:371)
	at org.eclipse.osgi.container.Module.doStart(Module.java:605)
	at org.eclipse.osgi.container.Module.start(Module.java:468)
	at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel$2.run(ModuleContainer.java:1847)
	at org.eclipse.osgi.internal.framework.EquinoxContainerAdaptor$1$1.execute(EquinoxContainerAdaptor.java:136)
	at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.incStartLevel(ModuleContainer.java:1840)
	at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.incStartLevel(ModuleContainer.java:1783)
	at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.doContainerStartLevel(ModuleContainer.java:1745)
	at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.dispatchEvent(ModuleContainer.java:1667)
	at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.dispatchEvent(ModuleContainer.java:1)
	at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:234)
	at org.eclipse.osgi.framework.eventmgr.EventManager$EventThread.run(EventManager.java:345)
Caused by: java.lang.NullPointerException: Cannot invoke "org.eclipse.core.runtime.Plugin.getStateLocation()" because the return value of "org.eclipse.jdt.core.JavaCore.getPlugin()" is null
	at org.eclipse.jdt.internal.core.search.indexing.IndexManager.getJavaPluginWorkingLocation(IndexManager.java:605)
	at org.eclipse.jdt.internal.core.search.indexing.IndexManager.getSavedIndexesDirectory(IndexManager.java:609)
	at org.eclipse.jdt.internal.core.search.indexing.IndexManager.<init>(IndexManager.java:114)
	at org.eclipse.jdt.internal.core.JavaModelManager.<init>(JavaModelManager.java:1776)
	at org.eclipse.jdt.internal.core.JavaModelManager.<clinit>(JavaModelManager.java:1206)
	... 102 more

The ExceptionInitializationError is a hint that something failed in a static block. Once the that fails, the class never gets loaded.

rgrunber avatar Mar 18 '22 12:03 rgrunber

~As of 1.6.0 ( #1900 ) we stopped generating those .project, .classpath files at the project root. In order to do that, we overrode the filesystem used for the file scheme.~ Can't be this because the functionality is disabled by default though it is closely related.

Update : Ok, I think I found the root cause, a workaround, and a potential fix we need. org.eclipse.jdt.ls.core lists an optional requirement on m2e, but it seems like it should be a strict requirement. The plugin fails to start correctly because m2e isn't installed. Once you install M2E, and start up again, the problem should go away (went away for me). @jeffmaury Can you confirm this ?

@fbricon @testforstephen , any issue with making the m2e requirements strict (instead of optional) to support Jeff's use case ?

I don't get the point why Optional requirement is the cause of the failure. jdt.ls distros contain the required m2e bundles, it should load m2e bundle on demand.

The reason that we make m2e and buildship to be an optional dependency is to improve loading speed and memory consumption of the lightweight mode. m2e and buildship are only loaded in standard mode, but not in lightweight mode.

testforstephen avatar Mar 18 '22 13:03 testforstephen

~As of 1.6.0 ( #1900 ) we stopped generating those .project, .classpath files at the project root. In order to do that, we overrode the filesystem used for the file scheme.~ Can't be this because the functionality is disabled by default though it is closely related. Update : Ok, I think I found the root cause, a workaround, and a potential fix we need. org.eclipse.jdt.ls.core lists an optional requirement on m2e, but it seems like it should be a strict requirement. The plugin fails to start correctly because m2e isn't installed. Once you install M2E, and start up again, the problem should go away (went away for me). @jeffmaury Can you confirm this ? @fbricon @testforstephen , any issue with making the m2e requirements strict (instead of optional) to support Jeff's use case ?

I don't get the point why Optional requirement is the cause of the failure. jdt.ls distros contain the required m2e bundles, it should load m2e bundle on demand.

The reason that we make m2e and buildship to be an optional dependency is to improve loading speed and memory consumption of the lightweight mode. m2e and buildship are only loaded in standard mode, but not in lightweight mode.

Yes, the JDT-LS tarball contains all the required dependencies, but we also ship a p2 repo at Eclipse that contains just the org.eclipse.jdt.ls.core bundle ( https://download.eclipse.org/jdtls/snapshots/repository/1.10.0.202203160029/plugins/ ).

The more recent stacktrace I posted is something else though, because m2e was there already.

rgrunber avatar Mar 18 '22 13:03 rgrunber

I'm pretty sure it's related to the JLSFileSystem now. The installation worked with the Java EPP on version 1.5.0, but failed on 1.6.0. That's exactly when we introduced the filesystem functionality. Also, if I take a JDT-LS, and remove the JLSFileSystem contribution to org.eclipse.core.filesystem.filesystems, in the plugin.xml, and re-run Eclipse with -clean, it works.

Maybe it's as simple as JDT-LS needs to be started automatically now that it contributes tot he filesystem extension point. Even though the filesystem isn't used, it acts as a wrapper for the default behaviour, so it's enough for JDT-LS to fail to load it.

@jeffmaury , what's your specific use case for installing JDT-LS into Eclipse ? Is it not easier to use the JDT-LS (self-contained) tarball to run it headless ?

rgrunber avatar Mar 18 '22 23:03 rgrunber

Close since it's fixed by #2309. Let us know if it's not working.

jdneo avatar Dec 06 '22 02:12 jdneo