In April 2014, Scott Lewis wrote:
"We arrange some set of features (maybe exactly what we
have now, maybe not...I'm not sure) so that *both* versions of
asyncproxy are installed into consumer's runtimes (Eclipse,
other p2 users, or others...e.g. Karaf). Why do this? My
thinking is this: This way, at framework startup time if both
1.0 and 2.0 versions of async proxy are present, and the java
version being used is < J8, then the asyncproxy 1.0 version
will resolve and be wired to, while if the java version is
>= j8 then the 2.0 version will be used/wired. If my
thinking is right on this, then this would mean that J8 users
of ECF would have to do absolutely nothing to use this new
CompletableFutures with async proxies....if they ran using j8
then the async proxy use of CF would/will 'just work'."
Now I'm using remote OSGI on a framework running on a java
7 environment. I can't use java 8 because the destination
system of the product will be an IBM Power8 with Linux and
for now a java 8 JVM is not available for this system. When
the OSGI framework starts ( on a test system with Windows 7,
Eclipse Luna and Java-SE1.7 execution environment ), in
console I have this error message:
org.osgi.framework.BundleException: Could not resolve
module: org.eclipse.ecf.remoteservice.asyncproxy [1248]
Unresolved requirement: Require-Capability: osgi.ee;
filter:="(&(osgi.ee=JavaSE)(version=1.8))"
It seems like the system always loads the 2.0 version of
asyncproxy bundle (that require a J8 environment) instead of
the right 1.0 version for J7.
So, only for my tests it
seems that the Scott Lewis solution based on
Require-Capability filters and
multiple version bundles does not work properly. But it is possible that i'm doing something wrong.
Anyone can help me?
And, if the solution really does not work, what can i do
for load and wire the correct version of asyncproxy bundle?
Any help will be very appreciate.