eclipse.jdt.ls
eclipse.jdt.ls copied to clipboard
jdt.ls 1.9.0 breaks workspace loading
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 could you, please, try the latest snapshot - https://download.eclipse.org/jdtls/snapshots/repository/1.10.0.202203160029/
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
~~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 ?
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
@snjeza Got the same error using https://download.eclipse.org/jdtls/snapshots/repository/1.10.0.202203160029/
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.
~As of 1.6.0 ( #1900 ) we stopped generating those
.project,.classpathfiles at the project root. In order to do that, we overrode the filesystem used for thefilescheme.~ 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.corelists 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.
~As of 1.6.0 ( #1900 ) we stopped generating those
.project,.classpathfiles at the project root. In order to do that, we overrode the filesystem used for thefilescheme.~ 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.corelists 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.
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 ?
Close since it's fixed by #2309. Let us know if it's not working.