Hi JB,

I wonder how to tie the versions, apparently something changed in the resolver, 
where it is now picking up the latest released version of various artifacts, 
originally it was for wrap but I am now seeing it for others.  Funny thing is, 
it was working before, but after version 4.3.2 was released, now it is failing. 
 

For example, now I am seeing it happening with the Framework.  Example:


Unable to resolve framework/4.3.1: missing requirement [framework/4.3.1] 
osgi.identity; osgi.identity=org.apache.karaf.features.extension; 
type=osgi.fragment; version="[4.3.1,4.3.1]"; resolution:=mandatory [caused by: 
Fragment was not selected for attachment: org.apache.karaf.features.extension 
[1](R 1.0)]
        at 
org.apache.felix.resolver.Candidates$MissingRequirementError.toException(Candidates.java:1341)
        ... 12 more
Caused by: org.apache.felix.resolver.reason.ReasonException: Fragment was not 
selected for attachment: org.apache.karaf.features.extension [1](R 1.0)
        at 
org.apache.felix.resolver.Candidates$FragmentNotSelectedError.toException(Candidates.java:1305)
        ... 13 more


This is in the context of Custom Karaf distributions.  I see multiple versions 
being put in the system directory: 

$  ls -l system/org/apache/karaf/features/org.apache.karaf.features.extension
total 0
drwxr-xr-x. 2 vagrant vagrant 59 May 18 18:04 4.3.1
drwxr-xr-x. 2 vagrant vagrant 59 May 18 18:04 4.3.2

So it is pulling version 4.3.2, but I am only referencing 4.3.1 in my Maven POM:

<dependencies>
    <dependency>
      <groupId>org.apache.karaf.features</groupId>
      <artifactId>framework</artifactId>
      <version>4.3.1</version>
      <type>kar</type>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>org.apache.karaf.features</groupId>
      <artifactId>standard</artifactId>
      <version>4.3.1</version>
      <type>xml</type>
      <classifier>features</classifier>
      <scope>provided</scope>
    </dependency>
  </dependencies>


Even though I am specifying the versions, the karaf-maven-plugin is still 
pulling the newest.  So, the question is, how to control the versions I want, 
and not be surprised by a future Karaf release?   

Best regards,
Alex soto




> On May 6, 2021, at 11:56 PM, Jean-Baptiste Onofre <j...@nanthrax.net> wrote:
> 
> Hi Alex,
> 
> Yes, the version is not correct. I would check your feature / pom.xml, maybe 
> you don’t have version defined, so it takes the latest one.
> 
> Regards
> JB
> 
>> Le 6 mai 2021 à 18:56, Alex Soto <alex.s...@envieta.com 
>> <mailto:alex.s...@envieta.com>> a écrit :
>> 
>> 
>> I see…  
>> 
>> Karaf is looking for wrap version 2.6.7, but the version the  framework 
>> feature brings  is version is 2.6.2, so it does not find it.
>> However, I don’t know who is pulling version 2.6.7.  Will search for that...
>> 
>> Best regards,
>> Alex soto
>> 
>> 
>> 
>> 
>>> On May 6, 2021, at 10:15 AM, Alex Soto <alex.s...@envieta.com 
>>> <mailto:alex.s...@envieta.com>> wrote:
>>> 
>>> Thanks, JB, 
>>> 
>>> but I don’t understand.  When I inspect my 
>>> /etc/org.apache.karaf.features.cfg  file:
>>> 
>>> #
>>> # Comma separated list of features repositories to register by default
>>> #
>>> featuresRepositories = \
>>>     mvn:org.apache.karaf.features/standard/4.3.0/xml/features, \
>>>     mvn:org.apache.karaf.features/framework/4.3.0/xml/features, ...
>>> 
>>> #
>>> # Comma separated list of features to install at startup
>>> #
>>> featuresBoot = \
>>>     (wrap), \
>>>     package/4.3.1, \
>>>     log/4.3.1, \
>>>     ssh/4.3.1, \
>>>     framework/4.3.0, \
>>>     system/4.3.1, \
>>>     ...
>>> 
>>> 
>>> 
>>> The framework feature is there.
>>> 
>>> Also there is the jar:  
>>> /system/org/osgi/org.osgi.util.function/1.0.0/org.osgi.util.function-1.0.0.jar
>>>  
>>> 
>>> So, what do I need to do?
>>> 
>>> Best regards,
>>> Alex soto
>>> 
>>> 
>>> 
>>> 
>>>> On May 6, 2021, at 9:59 AM, Jean-Baptiste Onofre <j...@nanthrax.net 
>>>> <mailto:j...@nanthrax.net>> wrote:
>>>> 
>>>> Hi,
>>>> 
>>>> osgi.function is part of the framework feature:
>>>> 
>>>> https://github.com/apache/karaf/blob/main/assemblies/features/framework/src/main/feature/feature.xml#L34
>>>>  
>>>> <https://github.com/apache/karaf/blob/main/assemblies/features/framework/src/main/feature/feature.xml#L34>
>>>> 
>>>> That’s for Karaf 4.3.1/4.3.2.
>>>> 
>>>> For 4.3.0, it’s there but in version 1.0.0:
>>>> 
>>>> https://repo1.maven.org/maven2/org/apache/karaf/features/framework/4.3.0/framework-4.3.0-features.xml
>>>>  
>>>> <https://repo1.maven.org/maven2/org/apache/karaf/features/framework/4.3.0/framework-4.3.0-features.xml>
>>>> 
>>>> Regards
>>>> JB
>>>> 
>>>>> Le 6 mai 2021 à 17:36, Alex Soto <alex.s...@envieta.com 
>>>>> <mailto:alex.s...@envieta.com>> a écrit :
>>>>> 
>>>>> Hello,
>>>>> 
>>>>> Using a custom distribution, based on  Karaf version 4.3.0, I am getting 
>>>>> the following error, and Karaf would not start:
>>>>> 
>>>>> 
>>>>> $ bin/karaf 
>>>>> org.apache.felix.resolver.reason.ReasonException: Unable to resolve root: 
>>>>> missing requirement [root] osgi.identity; osgi.identity=wrap; 
>>>>> type=karaf.feature; version="[2.6.7,2.6.7]"; 
>>>>> filter:="(&(osgi.identity=wrap)(type=karaf.feature)(version>=2.6.7)(version<=2.6.7))"
>>>>>  [caused by: Unable to resolve wrap/2.6.7: missing requirement 
>>>>> [wrap/2.6.7] osgi.identity; osgi.identity=pax-url-wrap; 
>>>>> type=karaf.feature; version="[2.6.7,2.6.7]" [caused by: Unable to resolve 
>>>>> pax-url-wrap/2.6.7: missing requirement [pax-url-wrap/2.6.7] 
>>>>> osgi.identity; osgi.identity=org.ops4j.pax.url.wrap; type=osgi.bundle; 
>>>>> version="[2.6.7,2.6.7]"; resolution:=mandatory [caused by: Unable to 
>>>>> resolve org.ops4j.pax.url.wrap/2.6.7: missing requirement 
>>>>> [org.ops4j.pax.url.wrap/2.6.7] osgi.wiring.package; 
>>>>> filter:="(&(osgi.wiring.package=org.osgi.util.function)(version>=1.1.0)(!(version>=2.0.0)))"]]]
>>>>>   at 
>>>>> org.apache.felix.resolver.Candidates$MissingRequirementError.toException(Candidates.java:1341)
>>>>>   at 
>>>>> org.apache.felix.resolver.ResolverImpl.doResolve(ResolverImpl.java:434)
>>>>>   at org.apache.felix.resolver.ResolverImpl.resolve(ResolverImpl.java:421)
>>>>>   at org.apache.felix.resolver.ResolverImpl.resolve(ResolverImpl.java:375)
>>>>>   at 
>>>>> org.apache.karaf.features.internal.region.SubsystemResolver.resolve(SubsystemResolver.java:257)
>>>>>   at 
>>>>> org.apache.karaf.features.internal.service.Deployer.deploy(Deployer.java:392)
>>>>>   at 
>>>>> org.apache.karaf.features.internal.service.FeaturesServiceImpl.doProvision(FeaturesServiceImpl.java:1062)
>>>>>   at 
>>>>> org.apache.karaf.features.internal.service.FeaturesServiceImpl.lambda$doProvisionInThread$13(FeaturesServiceImpl.java:998)
>>>>>   at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
>>>>>   at 
>>>>> java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
>>>>>   at 
>>>>> java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
>>>>>   at java.base/java.lang.Thread.run(Thread.java:829)
>>>>> Caused by: org.apache.felix.resolver.reason.ReasonException: Unable to 
>>>>> resolve wrap/2.6.7: missing requirement [wrap/2.6.7] osgi.identity; 
>>>>> osgi.identity=pax-url-wrap; type=karaf.feature; version="[2.6.7,2.6.7]" 
>>>>> [caused by: Unable to resolve pax-url-wrap/2.6.7: missing requirement 
>>>>> [pax-url-wrap/2.6.7] osgi.identity; osgi.identity=org.ops4j.pax.url.wrap; 
>>>>> type=osgi.bundle; version="[2.6.7,2.6.7]"; resolution:=mandatory [caused 
>>>>> by: Unable to resolve org.ops4j.pax.url.wrap/2.6.7: missing requirement 
>>>>> [org.ops4j.pax.url.wrap/2.6.7] osgi.wiring.package; 
>>>>> filter:="(&(osgi.wiring.package=org.osgi.util.function)(version>=1.1.0)(!(version>=2.0.0)))"]]
>>>>>   at 
>>>>> org.apache.felix.resolver.Candidates$MissingRequirementError.toException(Candidates.java:1341)
>>>>>   ... 12 more
>>>>> Caused by: org.apache.felix.resolver.reason.ReasonException: Unable to 
>>>>> resolve pax-url-wrap/2.6.7: missing requirement [pax-url-wrap/2.6.7] 
>>>>> osgi.identity; osgi.identity=org.ops4j.pax.url.wrap; type=osgi.bundle; 
>>>>> version="[2.6.7,2.6.7]"; resolution:=mandatory [caused by: Unable to 
>>>>> resolve org.ops4j.pax.url.wrap/2.6.7: missing requirement 
>>>>> [org.ops4j.pax.url.wrap/2.6.7] osgi.wiring.package; 
>>>>> filter:="(&(osgi.wiring.package=org.osgi.util.function)(version>=1.1.0)(!(version>=2.0.0)))"]
>>>>>   at 
>>>>> org.apache.felix.resolver.Candidates$MissingRequirementError.toException(Candidates.java:1341)
>>>>>   ... 13 more
>>>>> Caused by: org.apache.felix.resolver.reason.ReasonException: Unable to 
>>>>> resolve org.ops4j.pax.url.wrap/2.6.7: missing requirement 
>>>>> [org.ops4j.pax.url.wrap/2.6.7] osgi.wiring.package; 
>>>>> filter:="(&(osgi.wiring.package=org.osgi.util.function)(version>=1.1.0)(!(version>=2.0.0)))"
>>>>>   at 
>>>>> org.apache.felix.resolver.Candidates$MissingRequirementError.toException(Candidates.java:1341)
>>>>>   ... 14 more
>>>>> 
>>>>> 
>>>>> 
>>>>> Java version is:  openjdk version "11.0.11" 2021-04-20 LTS
>>>>> OS:  Linux version 3.10.0-1127.el7.x86_64 
>>>>> (mockbu...@kbuilder.bsys.centos.org 
>>>>> <mailto:mockbu...@kbuilder.bsys.centos.org>) (gcc version 4.8.5 20150623 
>>>>> (Red Hat 4.8.5-39) (GCC) ) #1 SMP Tue Mar 31 23:36:51 UTC 2020
>>>>> 
>>>>> 
>>>>> I have verified the required jar is present:
>>>>> 
>>>>> $ ls -l system/org/osgi/org.osgi.util.function/1.1.0/
>>>>> total 16
>>>>> -rw-r--r--. 1 vagrant vagrant 14053 May  6 14:49 
>>>>> org.osgi.util.function-1.1.0.jar
>>>>> 
>>>>> 
>>>>> Any help will be appreciated. 
>>>>> 
>>>>> Best regards,
>>>>> Alex soto
>>>>> 
>>>>> 
>>>>> 
>>>>> 
>>>> 
>>> 
>> 
> 

Reply via email to