Hi, we at Eclipse Code Recommenders recently got a bug report [1] about a bundle resolution failure in Mars M3.
Apparently, the fact that Mars M3 ships Apache HttpClient/Core 4.3.x rather than 4.2.x causes Eclipse Aether (which Code Recommenders uses internally) to not resolve properly: > org.osgi.service.resolver.ResolutionException: Uses constraint violation. > Unable to resolve resource org.eclipse.aether.transport.http [osgi.identity; > osgi.identity="org.eclipse.aether.transport.http"; type="osgi.bundle"; > version:Version="1.0.0.v20140518"] because it is exposed to package > 'org.apache.http.entity' from resources org.apache.httpcomponents.httpcore > [osgi.identity; osgi.identity="org.apache.httpcomponents.httpcore"; > type="osgi.bundle"; version:Version="4.2.5.v201311072007"] and > org.apache.httpcomponents.httpcore [osgi.identity; > osgi.identity="org.apache.httpcomponents.httpcore"; type="osgi.bundle"; > version:Version="4.3.2.v201409180530"] via two dependency chains. > > Chain 1: > org.eclipse.aether.transport.http [osgi.identity; > osgi.identity="org.eclipse.aether.transport.http"; type="osgi.bundle"; > version:Version="1.0.0.v20140518"] > import: > (&(osgi.wiring.package=org.apache.http.entity)(&(version>=4.2.1)(!(version>=4.3.0)))) > | > export: osgi.wiring.package: org.apache.http.entity > org.apache.httpcomponents.httpcore [osgi.identity; > osgi.identity="org.apache.httpcomponents.httpcore"; type="osgi.bundle"; > version:Version="4.2.5.v201311072007"] > > Chain 2: > org.eclipse.aether.transport.http [osgi.identity; > osgi.identity="org.eclipse.aether.transport.http"; type="osgi.bundle"; > version:Version="1.0.0.v20140518"] > import: > (&(osgi.wiring.package=org.apache.http.conn.ssl)(&(version>=4.2.1)(!(version>=4.3.0)))) > | > export: osgi.wiring.package=org.apache.http.conn.ssl; > uses:=org.apache.http.entity > org.apache.httpcomponents.httpclient [osgi.identity; > osgi.identity="org.apache.httpcomponents.httpclient"; type="osgi.bundle"; > version:Version="4.2.6.v201311072007"] > import: (&(osgi.wiring.package=org.apache.http.entity)(version>=4.2.5)) > | > export: osgi.wiring.package: org.apache.http.entity > org.apache.httpcomponents.httpcore [osgi.identity; > osgi.identity="org.apache.httpcomponents.httpcore"; type="osgi.bundle"; > version:Version="4.3.2.v201409180530"] This wiring problem may affect other projects beyond Eclipse Aether as well (hence the cross-post to cross-project-issues), if they import a specific *minor* version of Apache HttpClient/Core (Aether requires 4.2.x). What I don't quite understand is why the bundles are wired as they are, though, as a solution to the uses constraint problem seems to exist: Wire org.apache.httpcomponents.httpclient 4.2.6 to org.apache.httpcomponents.httpcore 4.2.5 rather than 4.3.2. Is it because of the open-ended Import-Package of [4.2.5,) in org.apache.httpcomponents.httpclient 4.2.6? (FWIW, 4.3.2 doesn't use open-ended Import-Packages anymore. :-) Any advice in how to best proceed with this issue? Should org.eclipse.aether.transport.http use a broader Import-Package range including 4.3.x (provided that there were no breaking API changes between 4.2.x and 4.3.x)? Best wishes, Andreas [1] <https://bugs.eclipse.org/bugs/show_bug.cgi?id=450738> -- Codetrails GmbH The knowledge transfer company Robert-Bosch-Str. 7, 64293 Darmstadt Phone: +49-6151-276-7092 Mobile: +49-170-811-3791 http://www.codetrails.com/ Managing Director: Dr. Marcel Bruch Handelsregister: Darmstadt HRB 91940 _______________________________________________ cross-project-issues-dev mailing list cross-project-issues-dev@eclipse.org To change your delivery options, retrieve your password, or unsubscribe from this list, visit https://dev.eclipse.org/mailman/listinfo/cross-project-issues-dev