Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

SimRel 202409: Incompatible org.apache.commons.logging versions #40

Closed
avandorp opened this issue Aug 7, 2024 · 19 comments
Closed

SimRel 202409: Incompatible org.apache.commons.logging versions #40

avandorp opened this issue Aug 7, 2024 · 19 comments

Comments

@avandorp
Copy link

avandorp commented Aug 7, 2024

SimRel 2024-09 M1 and M2 versions of the Java IDE (EDIT: the JEE package, sorry) give an ExceptionInitializerError when using EGit. The reason is, that there are multiple implementations of org.apache.commons.logging available. The older one (1.2) comes from Orbit (https://github.com/eclipse-orbit/orbit-simrel/blob/main/maven-osgi/tp/other/MavenSupplement.target) and newer ones (1.3.2 and 1.3.3) from egit, jgit, platform and "supplement" itself via Maven (https://github.com/eclipse-orbit/orbit-simrel/blob/main/report/maven-osgi/supplement/REPORT.md). I'm not sure where that bug report belongs to, please advise if wrong here.

To reproduce: File/Import/Git/Projects from Git/Clone URI, use https://github.com/eclipse-orbit/orbit-simrel.git, Next:

java.lang.ExceptionInInitializerError at org.apache.http.conn.ssl.SSLConnectionSocketFactory.<clinit>(SSLConnectionSocketFactory.java:151) at org.eclipse.jgit.transport.http.apache.HttpClientConnectionFactory$HttpClientSession.configure(HttpClientConnectionFactory.java:81) at org.eclipse.jgit.transport.http.apache.HttpClientConnectionFactory$HttpClientSession.configure(HttpClientConnectionFactory.java:1) at org.eclipse.jgit.transport.TransportHttp.httpOpen(TransportHttp.java:1062) at org.eclipse.jgit.transport.TransportHttp.connect(TransportHttp.java:651) at org.eclipse.jgit.transport.TransportHttp.openFetch(TransportHttp.java:465) at org.eclipse.jgit.api.LsRemoteCommand.execute(LsRemoteCommand.java:170) at org.eclipse.jgit.api.LsRemoteCommand.call(LsRemoteCommand.java:131) at org.eclipse.egit.core.op.ListRemoteOperation.run(ListRemoteOperation.java:116) at org.eclipse.egit.ui.internal.clone.SourceBranchPage$9.run(SourceBranchPage.java:377) at org.eclipse.jface.operation.ModalContext$ModalContextThread.run(ModalContext.java:124) Caused by: org.apache.commons.logging.LogConfigurationException: The chosen LogFactory implementation does not extend LogFactory. Please check your configuration. (Caused by java.lang.ClassCastException: The application has specified that a custom LogFactory implementation should be used but Class 'org.apache.commons.logging.impl.LogFactoryImpl' cannot be converted to 'org.apache.commons.logging.LogFactory'. The conflict is caused by the presence of multiple LogFactory classes in incompatible classloaders. Background can be found in http://commons.apache.org/logging/tech.html. If you have not explicitly specified a custom LogFactory then it is likely that the container has set one without your knowledge. In this case, consider using the commons-logging-adapters.jar file or specifying the standard LogFactory from the command line. Help can be found @http://commons.apache.org/logging/troubleshooting.html.) at org.apache.commons.logging.LogFactory.createFactory(LogFactory.java:1154) at org.apache.commons.logging.LogFactory$2.run(LogFactory.java:960) at java.base/java.security.AccessController.doPrivileged(AccessController.java:319) at org.apache.commons.logging.LogFactory.newFactory(LogFactory.java:957) at org.apache.commons.logging.LogFactory.getFactory(LogFactory.java:624) at org.apache.commons.logging.LogFactory.getLog(LogFactory.java:655) at org.apache.http.conn.ssl.AbstractVerifier.<init>(AbstractVerifier.java:61) at org.apache.http.conn.ssl.AllowAllHostnameVerifier.<init>(AllowAllHostnameVerifier.java:44) at org.apache.http.conn.ssl.AllowAllHostnameVerifier.<clinit>(AllowAllHostnameVerifier.java:46) ... 11 more Caused by: java.lang.ClassCastException: The application has specified that a custom LogFactory implementation should be used but Class 'org.apache.commons.logging.impl.LogFactoryImpl' cannot be converted to 'org.apache.commons.logging.LogFactory'. The conflict is caused by the presence of multiple LogFactory classes in incompatible classloaders. Background can be found in http://commons.apache.org/logging/tech.html. If you have not explicitly specified a custom LogFactory then it is likely that the container has set one without your knowledge. In this case, consider using the commons-logging-adapters.jar file or specifying the standard LogFactory from the command line. Help can be found @http://commons.apache.org/logging/troubleshooting.html. at org.apache.commons.logging.LogFactory.createFactory(LogFactory.java:1108) ... 19 more

@merks
Copy link
Contributor

merks commented Aug 7, 2024

Probably this should be an EPP issue. But if the problem can literally only be fixed by eliminating the two versions, one way to do that would be for WTP not to use the bundle symbolic name in any bundle or feature:

image

I.e., only use package imports that tolerate the older logging version.

@merks
Copy link
Contributor

merks commented Aug 7, 2024

Oops, forgot the submit this earlier:

This all works for me:

image

I only see one version of logging installed.

I've been trying to get everyone onto the latest versions of Orbit via this issue

eclipse-simrel/simrel.build#438

But not with the greatest of success.

There are two versions of commons-logging in orbit because if I get rid of the older versions, I have failures like this:

[ERROR] Cannot resolve dependencies of project org.eclipse.orbit.maven.osgi:org.eclipse.orbit.maven.osgi.site:eclipse-repository:1.0.0-SNAPSHOT
[ERROR]  with context {osgi.os=win32, osgi.ws=win32, org.eclipse.update.install.features=true, osgi.arch=x86_64, org.eclipse.update.install.sources=true}
[ERROR]   Software being installed: org.eclipse.orbit.maven.osgi.site raw:1.0.0.'SNAPSHOT'/format(n[.n=0;[.n=0;[-S]]]):1.0.0-SNAPSHOT
[ERROR]   Missing requirement: org.apache.httpcomponents.httpclient 4.5.14 requires 'java.package; org.apache.commons.logging [1.1.0,1.3.0)' but it could not be found
[ERROR]   Cannot satisfy dependency: org.eclipse.orbit.maven.osgi.all.feature.group 4.33.0.v20240807-0900 depends on: org.eclipse.equinox.p2.iu; org.apache.httpcomponents.httpclient [4.5.14,4.5.14]
[ERROR]   Cannot satisfy dependency: org.eclipse.orbit.maven.osgi.site raw:1.0.0.'SNAPSHOT'/format(n[.n=0;[.n=0;[-S]]]):1.0.0-SNAPSHOT depends on: org.eclipse.equinox.p2.iu; org.eclipse.orbit.maven.osgi.all.feature.group 0.0.0: See log for details
[ERROR] -> [Help 1]

So until I get rid of all the older things that depend on this, and SimRel stops needing those older things, I can't get rid of the multiple versions.

As I look at the dependencies in detail, it strikes me that maybe you meant the JEE packae not the Java package. And indeed, then I can reproduce the stack trace because there are two versions:

image

I had a look here:

https://commons.apache.org/proper/commons-logging/troubleshooting.html#The_Incompatible_LogFactory_Issue

but specifying this in the eclipse.ini did not help.

-Dorg.apache.commons.logging.LogFactory=org.apache.commons.logging.impl.LogFactoryImpl

The list of things that depend on org.apache.httpcomponents.httpclient is endless:

image

I'm really not sure how this can be fixed, but it certainly can't be fixed in Orbit.

@merks
Copy link
Contributor

merks commented Aug 7, 2024

I wanted to reproduce the problem in debug mode so I did a debug launch of my EGit/JGit development environment where there are two logging versions, but here the clone operation worked:

image

@avandorp
Copy link
Author

avandorp commented Aug 7, 2024

Oops, yes, it's the JEE package. I've mixed up my installations. Sometimes you might simply get lucky if the classloader finds the fitting class first, I don't know how deterministic that is.
Specifying org.apache.commons.logging.impl.LogFactoryImpl as the preferred implementation doesn't work, as that is the one being duplicated, the classloader can still find the old one.

@ewillink
Copy link

ewillink commented Aug 7, 2024

For QVTd, I found the opposite. Previously using 2024-06, an org.apache.commons.logging dependency was resolved 'for free'. For 2024-09, I have to explicitly mention it in the target file as a unit to be provided from Orbit.

@merks
Copy link
Contributor

merks commented Aug 7, 2024

When I use this older orbit version (which is wrapped by Orbit rather than direct from Maven), then I can reproduce the problem:

image

java.lang.ExceptionInInitializerError
	at org.apache.http.conn.ssl.SSLConnectionSocketFactory.<clinit>(SSLConnectionSocketFactory.java:151)
	at org.eclipse.jgit.transport.http.apache.HttpClientConnectionFactory$HttpClientSession.configure(HttpClientConnectionFactory.java:89)
	at org.eclipse.jgit.transport.http.apache.HttpClientConnectionFactory$HttpClientSession.configure(HttpClientConnectionFactory.java:1)
	at org.eclipse.jgit.transport.TransportHttp.httpOpen(TransportHttp.java:1062)
	at org.eclipse.jgit.transport.TransportHttp.connect(TransportHttp.java:651)
	at org.eclipse.jgit.transport.TransportHttp.openFetch(TransportHttp.java:465)
	at org.eclipse.jgit.transport.FetchProcess.executeImp(FetchProcess.java:153)
	at org.eclipse.jgit.transport.FetchProcess.execute(FetchProcess.java:105)
	at org.eclipse.jgit.transport.Transport.fetch(Transport.java:1480)
	at org.eclipse.jgit.api.FetchCommand.call(FetchCommand.java:238)
	at org.eclipse.jgit.api.PullCommand.call(PullCommand.java:266)
	at org.eclipse.egit.core.op.PullOperation$PullJob.run(PullOperation.java:256)
	at org.eclipse.core.internal.jobs.Worker.run(Worker.java:63)
Caused by: org.apache.commons.logging.LogConfigurationException: The chosen LogFactory implementation does not extend LogFactory. Please check your configuration. (Caused by java.lang.ClassCastException: The application has specified that a custom LogFactory implementation should be used but Class 'org.apache.commons.logging.impl.LogFactoryImpl' cannot be converted to 'org.apache.commons.logging.LogFactory'. The conflict is caused by the presence of multiple LogFactory classes in incompatible classloaders. Background can be found in http://commons.apache.org/logging/tech.html. If you have not explicitly specified a custom LogFactory then it is likely that the container has set one without your knowledge. In this case, consider using the commons-logging-adapters.jar file or specifying the standard LogFactory from the command line. Help can be found @http://commons.apache.org/logging/troubleshooting.html.)
	at org.apache.commons.logging.LogFactory.createFactory(LogFactory.java:1154)
	at org.apache.commons.logging.LogFactory$2.run(LogFactory.java:960)
	at java.base/java.security.AccessController.doPrivileged(AccessController.java:318)
	at org.apache.commons.logging.LogFactory.newFactory(LogFactory.java:957)
	at org.apache.commons.logging.LogFactory.getFactory(LogFactory.java:624)
	at org.apache.commons.logging.LogFactory.getLog(LogFactory.java:655)
	at org.apache.http.conn.ssl.AbstractVerifier.<init>(AbstractVerifier.java:61)
	at org.apache.http.conn.ssl.AllowAllHostnameVerifier.<init>(AllowAllHostnameVerifier.java:44)
	at org.apache.http.conn.ssl.AllowAllHostnameVerifier.<clinit>(AllowAllHostnameVerifier.java:46)
	... 13 more
Caused by: java.lang.ClassCastException: The application has specified that a custom LogFactory implementation should be used but Class 'org.apache.commons.logging.impl.LogFactoryImpl' cannot be converted to 'org.apache.commons.logging.LogFactory'. The conflict is caused by the presence of multiple LogFactory classes in incompatible classloaders. Background can be found in http://commons.apache.org/logging/tech.html. If you have not explicitly specified a custom LogFactory then it is likely that the container has set one without your knowledge. In this case, consider using the commons-logging-adapters.jar file or specifying the standard LogFactory from the command line. Help can be found @http://commons.apache.org/logging/troubleshooting.html.
	at org.apache.commons.logging.LogFactory.createFactory(LogFactory.java:1108)
	... 21 more

But as you say, there may be some random order thing involved...

@avandorp
Copy link
Author

avandorp commented Aug 7, 2024

Adding -Dorg.apache.commons.logging.diagnostics.dest=logging.log to the eclipse.ini gives:

[LogFactory from org.eclipse.osgi.internal.loader.EquinoxClassLoader@974132237] [ENV] Extension directories (java.ext.dir): null [LogFactory from org.eclipse.osgi.internal.loader.EquinoxClassLoader@974132237] [ENV] Application classpath (java.class.path): C:\dev\javaEclipse202409M2\eclipse\\plugins/org.eclipse.equinox.launcher_1.6.900.v20240613-2009.jar [LogFactory from org.eclipse.osgi.internal.loader.EquinoxClassLoader@974132237] [ENV] Class org.apache.commons.logging.LogFactory was loaded via class loader org.eclipse.osgi.internal.loader.EquinoxClassLoader@974132237 [LogFactory from org.eclipse.osgi.internal.loader.EquinoxClassLoader@974132237] [ENV] Ancestry of class loader which loaded org.apache.commons.logging.LogFactory is org.eclipse.osgi.internal.loader.EquinoxClassLoader@974132237 == 'org.eclipse.osgi.internal.loader.EquinoxClassLoader@3a10140d[org.apache.commons.commons-logging:1.3.3(id=85)]' [LogFactory from org.eclipse.osgi.internal.loader.EquinoxClassLoader@974132237] [ENV] Ancestry of class loader which loaded org.apache.commons.logging.LogFactory is ClassLoader tree:org.eclipse.osgi.internal.loader.EquinoxClassLoader@974132237 --> jdk.internal.loader.ClassLoaders$PlatformClassLoader@1637728368 --> BOOT [LogFactory from org.eclipse.osgi.internal.loader.EquinoxClassLoader@974132237] BOOTSTRAP COMPLETED [LogFactory from org.eclipse.osgi.internal.loader.EquinoxClassLoader@974132237] [LOOKUP] LogFactory implementation requested for the first time for context class loader org.eclipse.osgi.internal.framework.ContextFinder@432914967 [LogFactory from org.eclipse.osgi.internal.loader.EquinoxClassLoader@974132237] [LOOKUP] org.eclipse.osgi.internal.framework.ContextFinder@432914967 == 'org.eclipse.osgi.internal.framework.ContextFinder@19cdc217' [LogFactory from org.eclipse.osgi.internal.loader.EquinoxClassLoader@974132237] [LOOKUP] ClassLoader tree:org.eclipse.osgi.internal.framework.ContextFinder@432914967 --> jdk.internal.loader.ClassLoaders$AppClassLoader@392292416 (SYSTEM) --> jdk.internal.loader.ClassLoaders$PlatformClassLoader@1637728368 --> BOOT [LogFactory from org.eclipse.osgi.internal.loader.EquinoxClassLoader@974132237] [LOOKUP] No properties file of name 'commons-logging.properties' found. [LogFactory from org.eclipse.osgi.internal.loader.EquinoxClassLoader@974132237] [LOOKUP] Looking for system property [org.apache.commons.logging.LogFactory] to define the LogFactory subclass to use... [LogFactory from org.eclipse.osgi.internal.loader.EquinoxClassLoader@974132237] [LOOKUP] No system property [org.apache.commons.logging.LogFactory] defined. [LogFactory from org.eclipse.osgi.internal.loader.EquinoxClassLoader@974132237] [LOOKUP] Using ServiceLoader to define the LogFactory subclass to use... [LogFactory from org.eclipse.osgi.internal.loader.EquinoxClassLoader@974132237] [LOOKUP] No properties file available to determine LogFactory subclass from.. [LogFactory from org.eclipse.osgi.internal.loader.EquinoxClassLoader@974132237] Checking if class 'org.apache.logging.log4j.Logger' is available in class loader org.eclipse.osgi.internal.loader.EquinoxClassLoader@974132237 [LogFactory from org.eclipse.osgi.internal.loader.EquinoxClassLoader@974132237] Failed to load class 'org.apache.logging.log4j.Logger' from class loader org.eclipse.osgi.internal.loader.EquinoxClassLoader@974132237: org.apache.logging.log4j.Logger [LogFactory from org.eclipse.osgi.internal.loader.EquinoxClassLoader@974132237] Checking if class 'org.slf4j.Logger' is available in class loader org.eclipse.osgi.internal.loader.EquinoxClassLoader@974132237 [LogFactory from org.eclipse.osgi.internal.loader.EquinoxClassLoader@974132237] [LOOKUP] SLF4J detected. Loading the SLF4J LogFactory implementation 'org.apache.commons.logging.impl.Slf4jLogFactory'. [LogFactory from org.eclipse.osgi.internal.loader.EquinoxClassLoader@974132237] Loaded class org.apache.commons.logging.impl.Slf4jLogFactory from class loader org.eclipse.osgi.internal.framework.ContextFinder@432914967 [LogFactory from org.eclipse.osgi.internal.loader.EquinoxClassLoader@974132237] Created object org.apache.commons.logging.impl.Slf4jLogFactory@918838100 to manage class loader org.eclipse.osgi.internal.framework.ContextFinder@432914967 [LogFactory from org.eclipse.osgi.internal.loader.EquinoxClassLoader@1600349974] [ENV] Extension directories (java.ext.dir): null [LogFactory from org.eclipse.osgi.internal.loader.EquinoxClassLoader@1600349974] [ENV] Application classpath (java.class.path): C:\dev\javaEclipse202409M2\eclipse\\plugins/org.eclipse.equinox.launcher_1.6.900.v20240613-2009.jar [LogFactory from org.eclipse.osgi.internal.loader.EquinoxClassLoader@1600349974] [ENV] Class org.apache.commons.logging.LogFactory was loaded via classloader org.eclipse.osgi.internal.loader.EquinoxClassLoader@1600349974 [LogFactory from org.eclipse.osgi.internal.loader.EquinoxClassLoader@1600349974] [ENV] Ancestry of classloader which loaded org.apache.commons.logging.LogFactory is org.eclipse.osgi.internal.loader.EquinoxClassLoader@1600349974 == 'org.eclipse.osgi.internal.loader.EquinoxClassLoader@5f636716[org.apache.commons.logging:1.2.0.v20180409-1502(id=91)]' [LogFactory from org.eclipse.osgi.internal.loader.EquinoxClassLoader@1600349974] [ENV] Ancestry of classloader which loaded org.apache.commons.logging.LogFactory is ClassLoader tree:org.eclipse.osgi.internal.loader.EquinoxClassLoader@1600349974 --> jdk.internal.loader.ClassLoaders$PlatformClassLoader@1637728368 --> BOOT [LogFactory from org.eclipse.osgi.internal.loader.EquinoxClassLoader@1600349974] BOOTSTRAP COMPLETED [LogFactory from org.eclipse.osgi.internal.loader.EquinoxClassLoader@1600349974] [LOOKUP] LogFactory implementation requested for the first time for context classloader org.eclipse.osgi.internal.framework.ContextFinder@432914967 [LogFactory from org.eclipse.osgi.internal.loader.EquinoxClassLoader@1600349974] [LOOKUP] org.eclipse.osgi.internal.framework.ContextFinder@432914967 == 'org.eclipse.osgi.internal.framework.ContextFinder@19cdc217' [LogFactory from org.eclipse.osgi.internal.loader.EquinoxClassLoader@1600349974] [LOOKUP] ClassLoader tree:org.eclipse.osgi.internal.framework.ContextFinder@432914967 --> jdk.internal.loader.ClassLoaders$AppClassLoader@392292416 (SYSTEM) --> jdk.internal.loader.ClassLoaders$PlatformClassLoader@1637728368 --> BOOT [LogFactory from org.eclipse.osgi.internal.loader.EquinoxClassLoader@1600349974] [LOOKUP] No properties file of name 'commons-logging.properties' found. [LogFactory from org.eclipse.osgi.internal.loader.EquinoxClassLoader@1600349974] [LOOKUP] Looking for system property [org.apache.commons.logging.LogFactory] to define the LogFactory subclass to use... [LogFactory from org.eclipse.osgi.internal.loader.EquinoxClassLoader@1600349974] [LOOKUP] No system property [org.apache.commons.logging.LogFactory] defined. [LogFactory from org.eclipse.osgi.internal.loader.EquinoxClassLoader@1600349974] [LOOKUP] Looking for a resource file of name [META-INF/services/org.apache.commons.logging.LogFactory] to define the LogFactory subclass to use... [LogFactory from org.eclipse.osgi.internal.loader.EquinoxClassLoader@1600349974] [LOOKUP] No resource file with name 'META-INF/services/org.apache.commons.logging.LogFactory' found. [LogFactory from org.eclipse.osgi.internal.loader.EquinoxClassLoader@1600349974] [LOOKUP] No properties file available to determine LogFactory subclass from.. [LogFactory from org.eclipse.osgi.internal.loader.EquinoxClassLoader@1600349974] [LOOKUP] Loading the default LogFactory implementation 'org.apache.commons.logging.impl.LogFactoryImpl' via the same classloader that loaded this LogFactory class (ie not looking in the context classloader). [LogFactory from org.eclipse.osgi.internal.loader.EquinoxClassLoader@1600349974] Factory class org.apache.commons.logging.impl.LogFactoryImpl loaded from classloader org.eclipse.osgi.internal.loader.EquinoxClassLoader@974132237 does not extend 'org.apache.commons.logging.LogFactory' as loaded by this classloader. [LogFactory from org.eclipse.osgi.internal.loader.EquinoxClassLoader@1600349974] [BAD CL TREE] org.eclipse.osgi.internal.loader.EquinoxClassLoader@1600349974 == 'org.eclipse.osgi.internal.loader.EquinoxClassLoader@5f636716[org.apache.commons.logging:1.2.0.v20180409-1502(id=91)]' [LogFactory from org.eclipse.osgi.internal.loader.EquinoxClassLoader@1600349974] [BAD CL TREE] ClassLoader tree:org.eclipse.osgi.internal.loader.EquinoxClassLoader@1600349974 --> jdk.internal.loader.ClassLoaders$PlatformClassLoader@1637728368 --> BOOT [LogFactoryImpl@599735454 from org.eclipse.osgi.internal.loader.EquinoxClassLoader@974132237] Instance created. [LogFactory from org.eclipse.osgi.internal.loader.EquinoxClassLoader@1600349974] [CUSTOM LOG FACTORY] org.eclipse.osgi.internal.loader.EquinoxClassLoader@974132237 == 'org.eclipse.osgi.internal.loader.EquinoxClassLoader@3a10140d[org.apache.commons.commons-logging:1.3.3(id=85)]' [LogFactory from org.eclipse.osgi.internal.loader.EquinoxClassLoader@1600349974] [CUSTOM LOG FACTORY] ClassLoader tree:org.eclipse.osgi.internal.loader.EquinoxClassLoader@974132237 --> jdk.internal.loader.ClassLoaders$PlatformClassLoader@1637728368 --> BOOT [LogFactory from org.eclipse.osgi.internal.loader.EquinoxClassLoader@1600349974] [CUSTOM LOG FACTORY] org.apache.commons.logging.impl.LogFactoryImpl implements LogFactory but was loaded by an incompatible classloader. [LogFactory from org.eclipse.osgi.internal.loader.EquinoxClassLoader@1600349974] The application has specified that a custom LogFactory implementation should be used but Class 'org.apache.commons.logging.impl.LogFactoryImpl' cannot be converted to 'org.apache.commons.logging.LogFactory'. The conflict is caused by the presence of multiple LogFactory classes in incompatible classloaders. Background can be found in http://commons.apache.org/logging/tech.html. If you have not explicitly specified a custom LogFactory then it is likely that the container has set one without your knowledge. In this case, consider using the commons-logging-adapters.jar file or specifying the standard LogFactory from the command line. Help can be found @http://commons.apache.org/logging/troubleshooting.html. [LogFactory from org.eclipse.osgi.internal.loader.EquinoxClassLoader@1600349974] Unable to create LogFactory instance. [LogFactory from org.eclipse.osgi.internal.loader.EquinoxClassLoader@1600349974] An error occurred while loading the factory class:The chosen LogFactory implementation does not extend LogFactory. Please check your configuration. (Caused by java.lang.ClassCastException: The application has specified that a custom LogFactory implementation should be used but Class 'org.apache.commons.logging.impl.LogFactoryImpl' cannot be converted to 'org.apache.commons.logging.LogFactory'. The conflict is caused by the presence of multiple LogFactory classes in incompatible classloaders. Background can be found in http://commons.apache.org/logging/tech.html. If you have not explicitly specified a custom LogFactory then it is likely that the container has set one without your knowledge. In this case, consider using the commons-logging-adapters.jar file or specifying the standard LogFactory from the command line. Help can be found @http://commons.apache.org/logging/troubleshooting.html.)
So during startup a working 1.3.3 LogFactory implentation is chosen, then when using git it finds both 1.2.0.x and 1.3.3 versions and somehow chooses the wrong combination (I'm not sure why it doesn't choose the same strategy as during startup where it looks for the implementation in the same classloader which is providing the interface).

@avandorp
Copy link
Author

avandorp commented Aug 7, 2024

Oh, rereading the log it actually tries to do the right thing during the git part: Loading the default LogFactory implementation 'org.apache.commons.logging.impl.LogFactoryImpl' via the same classloader that loaded this LogFactory class (ie not looking in the context classloader). But then it tries to use the LogFactoryImpl from the classLoader from the startup phase (974132237) which isn't compatible.

@merks
Copy link
Contributor

merks commented Aug 7, 2024

Switching again to the 1.2.0 version, the logging shows this successful result:

[LogFactory from org.eclipse.osgi.internal.loader.EquinoxClassLoader@1679147622] [ENV] Extension directories (java.ext.dir): null
[LogFactory from org.eclipse.osgi.internal.loader.EquinoxClassLoader@1679147622] [ENV] Application classpath (java.class.path): D:\Users\merks\egit-master\ws\.metadata\.plugins\org.eclipse.pde.core\.bundle_pool\plugins\org.eclipse.equinox.launcher_1.6.900.v20240613-2009.jar;
[LogFactory from org.eclipse.osgi.internal.loader.EquinoxClassLoader@1679147622] [ENV] Class org.apache.commons.logging.LogFactory was loaded via classloader org.eclipse.osgi.internal.loader.EquinoxClassLoader@1679147622
[LogFactory from org.eclipse.osgi.internal.loader.EquinoxClassLoader@1679147622] [ENV] Ancestry of classloader which loaded org.apache.commons.logging.LogFactory is org.eclipse.osgi.internal.loader.EquinoxClassLoader@1679147622 == 'org.eclipse.osgi.internal.loader.EquinoxClassLoader@6415c266[org.apache.commons.logging:1.2.0(id=58)]'
[LogFactory from org.eclipse.osgi.internal.loader.EquinoxClassLoader@1679147622] [ENV] Ancestry of classloader which loaded org.apache.commons.logging.LogFactory is ClassLoader tree:org.eclipse.osgi.internal.loader.EquinoxClassLoader@1679147622 --> jdk.internal.loader.ClassLoaders$PlatformClassLoader@1333157246 --> BOOT
[LogFactory from org.eclipse.osgi.internal.loader.EquinoxClassLoader@1679147622] BOOTSTRAP COMPLETED
[LogFactory from org.eclipse.osgi.internal.loader.EquinoxClassLoader@1679147622] [LOOKUP] LogFactory implementation requested for the first time for context classloader org.eclipse.osgi.internal.framework.ContextFinder@2129221032
[LogFactory from org.eclipse.osgi.internal.loader.EquinoxClassLoader@1679147622] [LOOKUP] org.eclipse.osgi.internal.framework.ContextFinder@2129221032 == 'org.eclipse.osgi.internal.framework.ContextFinder@7ee955a8'
[LogFactory from org.eclipse.osgi.internal.loader.EquinoxClassLoader@1679147622] [LOOKUP] ClassLoader tree:org.eclipse.osgi.internal.framework.ContextFinder@2129221032 --> jdk.internal.loader.ClassLoaders$AppClassLoader@895328852 (SYSTEM)  --> jdk.internal.loader.ClassLoaders$PlatformClassLoader@1333157246 --> BOOT
[LogFactory from org.eclipse.osgi.internal.loader.EquinoxClassLoader@1679147622] [LOOKUP] No properties file of name 'commons-logging.properties' found.
[LogFactory from org.eclipse.osgi.internal.loader.EquinoxClassLoader@1679147622] [LOOKUP] Looking for system property [org.apache.commons.logging.LogFactory] to define the LogFactory subclass to use...
[LogFactory from org.eclipse.osgi.internal.loader.EquinoxClassLoader@1679147622] [LOOKUP] No system property [org.apache.commons.logging.LogFactory] defined.
[LogFactory from org.eclipse.osgi.internal.loader.EquinoxClassLoader@1679147622] [LOOKUP] Looking for a resource file of name [META-INF/services/org.apache.commons.logging.LogFactory] to define the LogFactory subclass to use...
[LogFactory from org.eclipse.osgi.internal.loader.EquinoxClassLoader@1679147622] [LOOKUP] No resource file with name 'META-INF/services/org.apache.commons.logging.LogFactory' found.
[LogFactory from org.eclipse.osgi.internal.loader.EquinoxClassLoader@1679147622] [LOOKUP] No properties file available to determine LogFactory subclass from..
[LogFactory from org.eclipse.osgi.internal.loader.EquinoxClassLoader@1679147622] [LOOKUP] Loading the default LogFactory implementation 'org.apache.commons.logging.impl.LogFactoryImpl' via the same classloader that loaded this LogFactory class (ie not looking in the context classloader).
[LogFactory from org.eclipse.osgi.internal.loader.EquinoxClassLoader@1679147622] Loaded class org.apache.commons.logging.impl.LogFactoryImpl from classloader org.eclipse.osgi.internal.loader.EquinoxClassLoader@1679147622
[LogFactoryImpl@1443178738 from org.eclipse.osgi.internal.loader.EquinoxClassLoader@1679147622] Instance created.
[LogFactory from org.eclipse.osgi.internal.loader.EquinoxClassLoader@1679147622] Created object org.apache.commons.logging.impl.LogFactoryImpl@1443178738 to manage classloader org.eclipse.osgi.internal.framework.ContextFinder@2129221032
[LogFactoryImpl@1443178738 from org.eclipse.osgi.internal.loader.EquinoxClassLoader@1679147622] Discovering a Log implementation...
[LogFactoryImpl@1443178738 from org.eclipse.osgi.internal.loader.EquinoxClassLoader@1679147622] [ENV] Trying to get configuration for item org.apache.commons.logging.Log.allowFlawedContext
[LogFactoryImpl@1443178738 from org.eclipse.osgi.internal.loader.EquinoxClassLoader@1679147622] [ENV] No LogFactory attribute found for org.apache.commons.logging.Log.allowFlawedContext
[LogFactoryImpl@1443178738 from org.eclipse.osgi.internal.loader.EquinoxClassLoader@1679147622] [ENV] No system property found for property org.apache.commons.logging.Log.allowFlawedContext
[LogFactoryImpl@1443178738 from org.eclipse.osgi.internal.loader.EquinoxClassLoader@1679147622] [ENV] No configuration defined for item org.apache.commons.logging.Log.allowFlawedContext
[LogFactoryImpl@1443178738 from org.eclipse.osgi.internal.loader.EquinoxClassLoader@1679147622] [ENV] Trying to get configuration for item org.apache.commons.logging.Log.allowFlawedDiscovery
[LogFactoryImpl@1443178738 from org.eclipse.osgi.internal.loader.EquinoxClassLoader@1679147622] [ENV] No LogFactory attribute found for org.apache.commons.logging.Log.allowFlawedDiscovery
[LogFactoryImpl@1443178738 from org.eclipse.osgi.internal.loader.EquinoxClassLoader@1679147622] [ENV] No system property found for property org.apache.commons.logging.Log.allowFlawedDiscovery
[LogFactoryImpl@1443178738 from org.eclipse.osgi.internal.loader.EquinoxClassLoader@1679147622] [ENV] No configuration defined for item org.apache.commons.logging.Log.allowFlawedDiscovery
[LogFactoryImpl@1443178738 from org.eclipse.osgi.internal.loader.EquinoxClassLoader@1679147622] [ENV] Trying to get configuration for item org.apache.commons.logging.Log.allowFlawedHierarchy
[LogFactoryImpl@1443178738 from org.eclipse.osgi.internal.loader.EquinoxClassLoader@1679147622] [ENV] No LogFactory attribute found for org.apache.commons.logging.Log.allowFlawedHierarchy
[LogFactoryImpl@1443178738 from org.eclipse.osgi.internal.loader.EquinoxClassLoader@1679147622] [ENV] No system property found for property org.apache.commons.logging.Log.allowFlawedHierarchy
[LogFactoryImpl@1443178738 from org.eclipse.osgi.internal.loader.EquinoxClassLoader@1679147622] [ENV] No configuration defined for item org.apache.commons.logging.Log.allowFlawedHierarchy
[LogFactoryImpl@1443178738 from org.eclipse.osgi.internal.loader.EquinoxClassLoader@1679147622] Trying to get log class from attribute 'org.apache.commons.logging.Log'
[LogFactoryImpl@1443178738 from org.eclipse.osgi.internal.loader.EquinoxClassLoader@1679147622] Trying to get log class from attribute 'org.apache.commons.logging.log'
[LogFactoryImpl@1443178738 from org.eclipse.osgi.internal.loader.EquinoxClassLoader@1679147622] Trying to get log class from system property 'org.apache.commons.logging.Log'
[LogFactoryImpl@1443178738 from org.eclipse.osgi.internal.loader.EquinoxClassLoader@1679147622] Trying to get log class from system property 'org.apache.commons.logging.log'
[LogFactoryImpl@1443178738 from org.eclipse.osgi.internal.loader.EquinoxClassLoader@1679147622] No user-specified Log implementation; performing discovery using the standard supported logging implementations...
[LogFactoryImpl@1443178738 from org.eclipse.osgi.internal.loader.EquinoxClassLoader@1679147622] Attempting to instantiate 'org.apache.commons.logging.impl.Log4JLogger'
[LogFactoryImpl@1443178738 from org.eclipse.osgi.internal.loader.EquinoxClassLoader@1679147622] [WARNING] the context classloader is not part of a parent-child relationship with the classloader that loaded LogFactoryImpl.
[LogFactoryImpl@1443178738 from org.eclipse.osgi.internal.loader.EquinoxClassLoader@1679147622] Trying to load 'org.apache.commons.logging.impl.Log4JLogger' from classloader org.eclipse.osgi.internal.framework.ContextFinder@2129221032
[LogFactoryImpl@1443178738 from org.eclipse.osgi.internal.loader.EquinoxClassLoader@1679147622] Class 'org.apache.commons.logging.impl.Log4JLogger' was found at 'bundleresource://58.fwk1756419357/org/apache/commons/logging/impl/Log4JLogger.class'
[LogFactoryImpl@1443178738 from org.eclipse.osgi.internal.loader.EquinoxClassLoader@1679147622] The log adapter 'org.apache.commons.logging.impl.Log4JLogger' is missing dependencies when loaded via classloader org.eclipse.osgi.internal.framework.ContextFinder@2129221032: org/apache/log4j/Priority
[LogFactoryImpl@1443178738 from org.eclipse.osgi.internal.loader.EquinoxClassLoader@1679147622] Attempting to instantiate 'org.apache.commons.logging.impl.Jdk14Logger'
[LogFactoryImpl@1443178738 from org.eclipse.osgi.internal.loader.EquinoxClassLoader@1679147622] [WARNING] the context classloader is not part of a parent-child relationship with the classloader that loaded LogFactoryImpl.
[LogFactoryImpl@1443178738 from org.eclipse.osgi.internal.loader.EquinoxClassLoader@1679147622] Trying to load 'org.apache.commons.logging.impl.Jdk14Logger' from classloader org.eclipse.osgi.internal.framework.ContextFinder@2129221032
[LogFactoryImpl@1443178738 from org.eclipse.osgi.internal.loader.EquinoxClassLoader@1679147622] Class 'org.apache.commons.logging.impl.Jdk14Logger' was found at 'bundleresource://58.fwk1756419357/org/apache/commons/logging/impl/Jdk14Logger.class'
[LogFactoryImpl@1443178738 from org.eclipse.osgi.internal.loader.EquinoxClassLoader@1679147622] [INFO] 'org.apache.commons.logging.impl.Jdk14Logger' from classloader org.eclipse.osgi.internal.framework.ContextFinder@2129221032 does not declare optional method setLogFactory(LogFactory)
[LogFactoryImpl@1443178738 from org.eclipse.osgi.internal.loader.EquinoxClassLoader@1679147622] Log adapter 'org.apache.commons.logging.impl.Jdk14Logger' from classloader org.eclipse.osgi.internal.loader.EquinoxClassLoader@1679147622 has been selected for use.

I have no idea if this is just random success.

The failure log looks like this:

[LogFactory from org.eclipse.osgi.internal.loader.EquinoxClassLoader@1206231948] [ENV] Extension directories (java.ext.dir): null
[LogFactory from org.eclipse.osgi.internal.loader.EquinoxClassLoader@1206231948] [ENV] Application classpath (java.class.path): D:\Users\merks\egit-master\ws\.metadata\.plugins\org.eclipse.pde.core\.bundle_pool\plugins\org.eclipse.equinox.launcher_1.6.900.v20240613-2009.jar;
[LogFactory from org.eclipse.osgi.internal.loader.EquinoxClassLoader@1206231948] [ENV] Class org.apache.commons.logging.LogFactory was loaded via classloader org.eclipse.osgi.internal.loader.EquinoxClassLoader@1206231948
[LogFactory from org.eclipse.osgi.internal.loader.EquinoxClassLoader@1206231948] [ENV] Ancestry of classloader which loaded org.apache.commons.logging.LogFactory is org.eclipse.osgi.internal.loader.EquinoxClassLoader@1206231948 == 'org.eclipse.osgi.internal.loader.EquinoxClassLoader@47e5a38c[org.apache.commons.logging:1.2.0.v20180409-1502(id=58)]'
[LogFactory from org.eclipse.osgi.internal.loader.EquinoxClassLoader@1206231948] [ENV] Ancestry of classloader which loaded org.apache.commons.logging.LogFactory is ClassLoader tree:org.eclipse.osgi.internal.loader.EquinoxClassLoader@1206231948 --> jdk.internal.loader.ClassLoaders$PlatformClassLoader@567409515 --> BOOT
[LogFactory from org.eclipse.osgi.internal.loader.EquinoxClassLoader@1206231948] BOOTSTRAP COMPLETED
[LogFactory from org.eclipse.osgi.internal.loader.EquinoxClassLoader@1206231948] [LOOKUP] LogFactory implementation requested for the first time for context classloader org.eclipse.osgi.internal.framework.ContextFinder@2129221032
[LogFactory from org.eclipse.osgi.internal.loader.EquinoxClassLoader@1206231948] [LOOKUP] org.eclipse.osgi.internal.framework.ContextFinder@2129221032 == 'org.eclipse.osgi.internal.framework.ContextFinder@7ee955a8'
[LogFactory from org.eclipse.osgi.internal.loader.EquinoxClassLoader@1206231948] [LOOKUP] ClassLoader tree:org.eclipse.osgi.internal.framework.ContextFinder@2129221032 --> jdk.internal.loader.ClassLoaders$AppClassLoader@895328852 (SYSTEM)  --> jdk.internal.loader.ClassLoaders$PlatformClassLoader@567409515 --> BOOT
[LogFactory from org.eclipse.osgi.internal.loader.EquinoxClassLoader@1206231948] [LOOKUP] No properties file of name 'commons-logging.properties' found.
[LogFactory from org.eclipse.osgi.internal.loader.EquinoxClassLoader@1206231948] [LOOKUP] Looking for system property [org.apache.commons.logging.LogFactory] to define the LogFactory subclass to use...
[LogFactory from org.eclipse.osgi.internal.loader.EquinoxClassLoader@1206231948] [LOOKUP] No system property [org.apache.commons.logging.LogFactory] defined.
[LogFactory from org.eclipse.osgi.internal.loader.EquinoxClassLoader@1206231948] [LOOKUP] Looking for a resource file of name [META-INF/services/org.apache.commons.logging.LogFactory] to define the LogFactory subclass to use...
[LogFactory from org.eclipse.osgi.internal.loader.EquinoxClassLoader@1206231948] [LOOKUP] No resource file with name 'META-INF/services/org.apache.commons.logging.LogFactory' found.
[LogFactory from org.eclipse.osgi.internal.loader.EquinoxClassLoader@1206231948] [LOOKUP] No properties file available to determine LogFactory subclass from..
[LogFactory from org.eclipse.osgi.internal.loader.EquinoxClassLoader@1206231948] [LOOKUP] Loading the default LogFactory implementation 'org.apache.commons.logging.impl.LogFactoryImpl' via the same classloader that loaded this LogFactory class (ie not looking in the context classloader).
[LogFactory from org.eclipse.osgi.internal.loader.EquinoxClassLoader@1206231948] Factory class org.apache.commons.logging.impl.LogFactoryImpl loaded from classloader org.eclipse.osgi.internal.loader.EquinoxClassLoader@2092837886 does not extend 'org.apache.commons.logging.LogFactory' as loaded by this classloader.
[LogFactory from org.eclipse.osgi.internal.loader.EquinoxClassLoader@1206231948] [BAD CL TREE] org.eclipse.osgi.internal.loader.EquinoxClassLoader@1206231948 == 'org.eclipse.osgi.internal.loader.EquinoxClassLoader@47e5a38c[org.apache.commons.logging:1.2.0.v20180409-1502(id=58)]'
[LogFactory from org.eclipse.osgi.internal.loader.EquinoxClassLoader@1206231948] [BAD CL TREE] ClassLoader tree:org.eclipse.osgi.internal.loader.EquinoxClassLoader@1206231948 --> jdk.internal.loader.ClassLoaders$PlatformClassLoader@567409515 --> BOOT
[LogFactory from org.eclipse.osgi.internal.loader.EquinoxClassLoader@2092837886] [ENV] Extension directories (java.ext.dir): null
[LogFactory from org.eclipse.osgi.internal.loader.EquinoxClassLoader@2092837886] [ENV] Application classpath (java.class.path): D:\Users\merks\egit-master\ws\.metadata\.plugins\org.eclipse.pde.core\.bundle_pool\plugins\org.eclipse.equinox.launcher_1.6.900.v20240613-2009.jar;
[LogFactory from org.eclipse.osgi.internal.loader.EquinoxClassLoader@2092837886] [ENV] Class org.apache.commons.logging.LogFactory was loaded via class loader org.eclipse.osgi.internal.loader.EquinoxClassLoader@2092837886
[LogFactory from org.eclipse.osgi.internal.loader.EquinoxClassLoader@2092837886] [ENV] Ancestry of class loader which loaded org.apache.commons.logging.LogFactory is org.eclipse.osgi.internal.loader.EquinoxClassLoader@2092837886 == 'org.eclipse.osgi.internal.loader.EquinoxClassLoader@7cbe2bfe[org.apache.commons.commons-logging:1.3.2(id=55)]'
[LogFactory from org.eclipse.osgi.internal.loader.EquinoxClassLoader@2092837886] [ENV] Ancestry of class loader which loaded org.apache.commons.logging.LogFactory is ClassLoader tree:org.eclipse.osgi.internal.loader.EquinoxClassLoader@2092837886 --> jdk.internal.loader.ClassLoaders$PlatformClassLoader@567409515 --> BOOT
[LogFactory from org.eclipse.osgi.internal.loader.EquinoxClassLoader@2092837886] BOOTSTRAP COMPLETED
[LogFactoryImpl@144200173 from org.eclipse.osgi.internal.loader.EquinoxClassLoader@2092837886] Instance created.
[LogFactory from org.eclipse.osgi.internal.loader.EquinoxClassLoader@1206231948] [CUSTOM LOG FACTORY] org.eclipse.osgi.internal.loader.EquinoxClassLoader@2092837886 == 'org.eclipse.osgi.internal.loader.EquinoxClassLoader@7cbe2bfe[org.apache.commons.commons-logging:1.3.2(id=55)]'
[LogFactory from org.eclipse.osgi.internal.loader.EquinoxClassLoader@1206231948] [CUSTOM LOG FACTORY] ClassLoader tree:org.eclipse.osgi.internal.loader.EquinoxClassLoader@2092837886 --> jdk.internal.loader.ClassLoaders$PlatformClassLoader@567409515 --> BOOT
[LogFactory from org.eclipse.osgi.internal.loader.EquinoxClassLoader@1206231948] [CUSTOM LOG FACTORY] org.apache.commons.logging.impl.LogFactoryImpl implements LogFactory but was loaded by an incompatible classloader.
[LogFactory from org.eclipse.osgi.internal.loader.EquinoxClassLoader@1206231948] The application has specified that a custom LogFactory implementation should be used but Class 'org.apache.commons.logging.impl.LogFactoryImpl' cannot be converted to 'org.apache.commons.logging.LogFactory'. The conflict is caused by the presence of multiple LogFactory classes in incompatible classloaders. Background can be found in http://commons.apache.org/logging/tech.html. If you have not explicitly specified a custom LogFactory then it is likely that the container has set one without your knowledge. In this case, consider using the commons-logging-adapters.jar file or specifying the standard LogFactory from the command line. Help can be found @http://commons.apache.org/logging/troubleshooting.html.
[LogFactory from org.eclipse.osgi.internal.loader.EquinoxClassLoader@1206231948] Unable to create LogFactory instance.
[LogFactory from org.eclipse.osgi.internal.loader.EquinoxClassLoader@1206231948] An error occurred while loading the factory class:The chosen LogFactory implementation does not extend LogFactory. Please check your configuration. (Caused by java.lang.ClassCastException: The application has specified that a custom LogFactory implementation should be used but Class 'org.apache.commons.logging.impl.LogFactoryImpl' cannot be converted to 'org.apache.commons.logging.LogFactory'. The conflict is caused by the presence of multiple LogFactory classes in incompatible classloaders. Background can be found in http://commons.apache.org/logging/tech.html. If you have not explicitly specified a custom LogFactory then it is likely that the container has set one without your knowledge. In this case, consider using the commons-logging-adapters.jar file or specifying the standard LogFactory from the command line. Help can be found @http://commons.apache.org/logging/troubleshooting.html.)

@avandorp
Copy link
Author

avandorp commented Aug 7, 2024

What has changed regarding this to Simrel 2024-06?

@merks
Copy link
Contributor

merks commented Aug 7, 2024

The change I mentioned above #40 (comment) is that the new bundle symbolic name, BSN, is now explicitly used by some contributions, particularly by WTP which made me think to test the JEE package as I explained above and is why I suggested one approach is to not use the BSN in any bundle or feature, but rather rely purely on package imports.

It's also quite easy to exclude the 1.2.0.v20180409-1502 version with the old BSN:

image

I can then test the staging builds/products to see if that actually helps.

@ewillink
Copy link

ewillink commented Aug 7, 2024

A plausible guess is that some project has responded to @merks urging to not-redistribute Orbit bundles, so that whereas for 2024-06 the bad redistribution was unambiguous, now for 2024-09 there is a loading ambiguity. Ed's analysis tools and skills can I'm sure quickly confirm/ridicule the foregoing guess.

@merks
Copy link
Contributor

merks commented Aug 7, 2024

The 2024-06 release only had these, so only one version of org.apache.commons.logging:

image

@merks
Copy link
Contributor

merks commented Aug 7, 2024

I used the installer to create a JEE staging product. My first attempted failed, but it installed 1.2.0.v20180409-1502 version.

If I explicitly exclude that particular version from the installation like this:

image

Then the installation functions properly:

image

Given that I have no theory why the 1.2.0 version appears to work but the 1.2.0.v20180409-1502 version doesn't, or even that it might be a random thing doesn't make me so comfortable. Also needing to explicitly 1.2.0.v20180409-1502 the IU because the p2 director used by the installer will tend to pull in the higher version is also less than ideal.


Note that this build

https://ci.eclipse.org/packaging/job/epp/job/master/

will produce new staging products overnight, we can try that tomorrow.

https://download.eclipse.org/technology/epp/staging/

merks added a commit to eclipse-oomph/oomph that referenced this issue Aug 7, 2024
@merks
Copy link
Contributor

merks commented Aug 7, 2024

@nitind

Do you think you could try the alternative approach to avoid strictly requiring the 1.3.3 version? I.e., remove the includes from the two features and change the bundle requires to package requires in the other three?

image

I think it will be best to hedge our bets on how best to avoid this problem.

@merks
Copy link
Contributor

merks commented Aug 8, 2024

I tested the new jee package built last night from here

https://download.eclipse.org/technology/epp/staging/

and it contains the 1.2.0 version and JGit functions correctly:

image

@avandorp
Copy link
Author

avandorp commented Aug 8, 2024

Works on Linux too, thanks!

merks added a commit to merks/webservices that referenced this issue Aug 13, 2024
- Rely purely on package imports of org.apache.commons.logging and
include version 1.2.0 in the range.

eclipse-orbit/orbit-simrel#40
merks added a commit to merks/sourceediting that referenced this issue Aug 13, 2024
- Rely purely on package imports of org.apache.commons.logging and
include version 1.2.0 in the range.

eclipse-orbit/orbit-simrel#40
merks added a commit to merks/servertools that referenced this issue Aug 13, 2024
- Rely purely on package imports of org.apache.commons.logging that
include version 1.2.0 in the range.

eclipse-orbit/orbit-simrel#40
nitind pushed a commit to eclipse-servertools/servertools that referenced this issue Aug 14, 2024
- Rely purely on package imports of org.apache.commons.logging that
include version 1.2.0 in the range.

eclipse-orbit/orbit-simrel#40
nitind pushed a commit to eclipse-sourceediting/sourceediting that referenced this issue Aug 14, 2024
- Rely purely on package imports of org.apache.commons.logging and
include version 1.2.0 in the range.

eclipse-orbit/orbit-simrel#40
nitind pushed a commit to eclipse-webservices/webservices that referenced this issue Aug 14, 2024
- Rely purely on package imports of org.apache.commons.logging and
include version 1.2.0 in the range.

eclipse-orbit/orbit-simrel#40
@merks
Copy link
Contributor

merks commented Aug 16, 2024

Status update. It appears that WTP's M3 contribution will avoid this problem entirely:

eclipse-simrel/simrel.build#485

@merks
Copy link
Contributor

merks commented Aug 24, 2024

There are multiple confirmations that M3 avoid the multiple logging libraries problems. These two versions that come from Orbit are in the train repository:

image

Only CDO is contained in a package but not that one thing with the dependency. I tested the modeling package M3 that marketplace client and egit work okay. It might still be the case that someone updating a modeling package from 2024-06 to 2024-09 would end up with a non-functioning installation but it worked okay when I tested it just now too.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants