OpenLiberty / liberty-tools-eclipse

Eclipse Public License 2.0
13 stars 9 forks source link

Install failure installing Liberty Tools after having installed Liberty Developer Tools #523

Open scottkurz opened 1 month ago

scottkurz commented 1 month ago

Installing this sequence:

  1. Enterprise Java - 2024-06
  2. LDT - https://marketplace.eclipse.org/content/ibm-liberty-developer-tools
  3. LT 24.0.9 driver (internal-only but this is now the 'main' contents at the time of this issue). the third step fails to complete.

So far this has only been observed on Windows.

An error is shown in the install wizard UI that maps to this message in the workspace log:

!MESSAGE Missing requirement: Liberty Tools Support for Language Servers 24.0.9.202409170137 (io.openliberty.tools.eclipse.lsp4e 24.0.9.202409170137) requires 'osgi.bundle; org.eclipse.lsp4mp.jdt.core 0.0.0' but it could not be found

There are some earlier messages in the logs like these:

!ENTRY org.eclipse.equinox.p2.metadata.repository 4 0 2024-09-20 11:29:53.178

!MESSAGE Unexpected error loading extension: org.eclipse.equinox.p2.metadata.repository.compositeRepository

!STACK 0

java.lang.LinkageError: loader constraint violation: loader org.eclipse.osgi.internal.loader.EquinoxClassLoader @1fb0ab37 wants to load class org.apache.hc.client5.http.impl.classic.HttpClientBuilder. A different class with the same name was previously loaded by org.eclipse.osgi.internal.loader.EquinoxClassLoader @6a6e671f. (org.apache.hc.client5.http.impl.classic.HttpClientBuilder is in unnamed module of loader org.eclipse.osgi.internal.loader.EquinoxClassLoader @6a6e671f, parent loader 'platform')

    at org.eclipse.ecf.internal.provider.filetransfer.httpclient5.Activator.getHttpClientFactory(Activator.java:247)

    at org.eclipse.ecf.internal.provider.filetransfer.httpclient5.Activator.registerHttpClient(Activator.java:290)

    at org.eclipse.ecf.internal.provider.filetransfer.httpclient5.Activator.getBrowseHttpClient(Activator.java:264)

    at org.eclipse.ecf.provider.filetransfer.httpclient5.HttpClientBrowseFileTransferFactory$1.sendBrowseRequest(HttpClientBrowseFileTransferFactory.java:59)

    at org.eclipse.ecf.provider.filetransfer.browse.MultiProtocolFileSystemBrowserAdapter.sendBrowseRequest(MultiProtocolFileSystemBrowserAdapter.java:97)

    at org.eclipse.equinox.internal.p2.transport.ecf.FileInfoReader.sendBrowseRequest(FileInfoReader.java:183)

    at org.eclipse.equinox.internal.p2.transport.ecf.FileInfoReader.getRemoteFiles(FileInfoReader.java:108)

    at org.eclipse.equinox.internal.p2.transport.ecf.FileInfoReader.getRemoteFile(FileInfoReader.java:124)

    at org.eclipse.equinox.internal.p2.transport.ecf.FileInfoReader.getLastModified(FileInfoReader.java:129)

    at org.eclipse.equinox.internal.p2.transport.ecf.RepositoryTransport.getLastModified(RepositoryTransport.java:275)

    at org.eclipse.oomph.p2.internal.core.CachingTransport.delegateGetLastModified(CachingTransport.java:427)

    at org.eclipse.oomph.p2.internal.core.CachingTransport.getLastModified(CachingTransport.java:364)

    at org.eclipse.equinox.internal.p2.repository.CacheManager.getLastModified(CacheManager.java:278)

    at org.eclipse.equinox.internal.p2.repository.CacheManager.createCache(CacheManager.java:195)

    at org.eclipse.equinox.internal.p2.metadata.repository.CompositeMetadataRepositoryFactory.getLocalFile(CompositeMetadataRepositoryFactory.java:77)

    at org.eclipse.equinox.internal.p2.metadata.repository.CompositeMetadataRepositoryFactory.load(CompositeMetadataRepositoryFactory.java:100)

    at org.eclipse.equinox.internal.p2.metadata.repository.MetadataRepositoryManager.factoryLoad(MetadataRepositoryManager.java:63)

    at org.eclipse.equinox.internal.p2.repository.helpers.AbstractRepositoryManager.loadRepository(AbstractRepositoryManager.java:799)

    at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)

    at java.base/java.lang.reflect.Method.invoke(Method.java:580)

    at org.eclipse.oomph.util.ReflectUtil.invokeMethod(ReflectUtil.java:119)

    at org.eclipse.oomph.p2.internal.core.CachingRepositoryManager.loadRepository(CachingRepositoryManager.java:448)

    at org.eclipse.oomph.p2.internal.core.CachingRepositoryManager.loadRepository(CachingRepositoryManager.java:231)

    at org.eclipse.oomph.p2.internal.core.CachingRepositoryManager$Metadata.loadRepository(CachingRepositoryManager.java:520)

    at org.eclipse.equinox.internal.p2.metadata.repository.MetadataRepositoryManager.loadRepository(MetadataRepositoryManager.java:110)

    at org.eclipse.equinox.internal.p2.metadata.repository.MetadataRepositoryManager.loadRepository(MetadataRepositoryManager.java:105)

    at org.eclipse.equinox.p2.engine.ProvisioningContext.loadMetadataRepository(ProvisioningContext.java:253)

    at org.eclipse.equinox.p2.engine.ProvisioningContext.getLoadedMetadataRepositories(ProvisioningContext.java:235)

    at org.eclipse.equinox.p2.engine.ProvisioningContext.getMetadata(ProvisioningContext.java:317)

    at org.eclipse.equinox.internal.p2.operations.RequestFlexer.findIUsWithSameId(RequestFlexer.java:317)

    at org.eclipse.equinox.internal.p2.operations.RequestFlexer.findAllVersionsAvailable(RequestFlexer.java:310)

    at org.eclipse.equinox.internal.p2.operations.RequestFlexer.loosenUpOriginalRequest(RequestFlexer.java:254)

    at org.eclipse.equinox.internal.p2.operations.RequestFlexer.computeLooseRequest(RequestFlexer.java:217)

    at org.eclipse.equinox.internal.p2.operations.RequestFlexer.getChangeRequest(RequestFlexer.java:89)

    at org.eclipse.equinox.p2.operations.RemediationOperation.computeRemedy(RemediationOperation.java:154)

    at org.eclipse.equinox.p2.operations.RemediationOperation.computeAllRemediations(RemediationOperation.java:113)

    at org.eclipse.equinox.p2.operations.RemediationOperation.computeProfileChangeRequest(RemediationOperation.java:97)

    at org.eclipse.equinox.p2.operations.RemediationOperation.lambda$0(RemediationOperation.java:223)

    at org.eclipse.equinox.internal.p2.operations.RemediationResolutionJob.runModal(RemediationResolutionJob.java:41)

    at org.eclipse.equinox.p2.operations.ProfileChangeOperation.resolveModal(ProfileChangeOperation.java:117)

    at org.eclipse.equinox.internal.p2.ui.dialogs.ProvisioningOperationWizard.computeRemediationOperation(ProvisioningOperationWizard.java:317)

    at org.eclipse.equinox.internal.p2.ui.dialogs.ProvisioningOperationWizard.lambda$10(ProvisioningOperationWizard.java:351)

    at org.eclipse.jface.operation.ModalContext$ModalContextThread.run(ModalContext.java:124)
scottkurz commented 1 month ago

Opened https://github.com/eclipse/ecf/issues/132

scottkurz commented 1 month ago

There are two possible workarounds at this point:

  1. Simply install Liberty Tools before LDT
    OR
  2. After installing LDT, delete the org.apache.httpcomponents.client5.httpclient5_5.3.1.v20240126-0900.jarbundle from the plugins pool dir, (by dflt it'srm ~/.p2/pool/plugins/org.apache.httpcomponents.client5.httpclient5_5.3.1.v20240126-0900.jar`) and then restart Eclipse with -clean. When I did this, I was able to complete installing LT.

As far as the workarounds:

It would seem that 1. might just defer the problem until the next time something is installed .. .which might actually be good enough.

I'm not sure if 2. has any side effects.