Hi Volker, Yes, this is a bug in 4.2.1 with Java 8 introduced with some functionality for Java 11. On Java 8 the jaxb is coming from the JDK (therefore you get these duplicate implementations with the library in the boot folder, so removing the library there is the correct thing to do.
This will be fixed for 4.2.2 (there jaxb is moved to some other folder which is not used in the Java 8 classpath). Best regards Stephan -----Original Message----- From: Althaus, Volker <[email protected]> Sent: Mittwoch, 5. Dezember 2018 14:16 To: [email protected] Subject: ClassCastException when calling FeaturesService#refreshFeatures - Duplicate JaxB on classpath Hi, I am stuck on a problem with a duplicate jaxb library on the classpath. Environment: Karaf 4.2.1, Win 7. Somewhere in my custom code I call "FeaturesService#refreshFeatures(EnumSet.noneOf(Option.class))". The FeaturesService is injected by a SCR @Reference annotation. The resulting exception is: java.lang.ClassCastException: org.apache.karaf.features.internal.model.Capability$JaxbAccessorF_value cannot be cast to com.sun.xml.internal.bind.v2.runtime.reflect.Accessor org.apache.karaf.features.internal.service.FeaturesProcessingSerializer.(FeaturesProcessingSerializer.java:80) org.apache.karaf.features.internal.service.FeaturesProcessorImpl.(FeaturesProcessorImpl.java:58) org.apache.karaf.features.internal.service.FeaturesProcessorImpl.(FeaturesProcessorImpl.java:98) org.apache.karaf.features.internal.service.FeaturesProcessorImpl.(FeaturesProcessorImpl.java:106) org.apache.karaf.features.internal.service.FeaturesServiceImpl.refreshFeatures(FeaturesServiceImpl.java:1183) When I call "feature:refresh" on the console: No exception. I googled around and found some threads about this and that I may have a duplicate jaxb lib on the classpath and I should remove all obsolete occurrences. I also found [KARAF-5912] where the jaxb-impl bundle was removed from the "framework" feature. I applied this to my Karaf 4.2.1 and also in all other features of my distribution (Camel e.g.). I removed it also in the startup.properties. Same exception again. Then I found another jaxb-impl-2.2.11.jar in the /lib/boot/ folder. If I remove this - it works! But now my question: Is this the correct way and don't I break something by removing this lib? And how can I remove it from my custom distribution? The karaf-maven-plugin does not have an option to remove libs which are included in the standard Karaf distribution. I didn't know any Maven phases where to hook a file delete after the karaf-maven-plugin did it's work (unless unpacking the zip, delete the file and re-package the stuff). Any ideas? TIA & Regards Volker Althaus CENIT AG, Industriestrasse 52-54, 70565 Stuttgart, Tel.: +49 711 7825-30, Fax: +49 711 7825-4000, Internet: www.cenit.com Geschaeftsstellen (Branch Offices): Berlin, Frankfurt, Hamburg, Hannover, Muenchen, Oelsnitz, Ratingen, Saarbruecken Vorstandsmitglieder (Members of the Board): Kurt Bengel (CEO), Matthias Schmidt (CFO) Aufsichtsratsmitglieder (Supervisory Board Members): Prof. Dr. Oliver Riedel (Vorsitzender des Aufsichtsrats / Chairman of the Supervisory Board), Stephan Gier, Ricardo Malta Bankverbindungen (Bank Accounts): Deutsche Bank (BLZ 600 700 70) Kto. 1661 040 IBAN : DE85 6007 0070 0166 1040 00 SWIFT-CODE : DEUTDESS, Commerzbank (BLZ 600 400 71) Kto. 532 015 500 IBAN : DE83 6004 0071 0532 0155 00 SWIFT-Code : COBADEFF600, Registergericht (Registry court): Amtsgericht Stuttgart Handelsregister (Commercial Register): HRB Nr. 19117 Umsatzsteuer (VAT) ID: DE 147 862 777
