[ https://issues.apache.org/jira/browse/COMPRESS-552?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17344551#comment-17344551 ]
Björn Michael edited comment on COMPRESS-552 at 5/14/21, 2:19 PM: ------------------------------------------------------------------ Since {{org.osgi.framework.BundleReference}} is an interface I'd suggest this version at {{OsgiUtils}} {code:java} private static boolean isBundleReference(Class<?> clazz) { Class<?> c = clazz; while (c != null) { for (Class<?> ifc : c.getInterfaces()) { if (ifc.getName().equals("org.osgi.framework.BundleReference")) { return true; } } c = c.getSuperclass(); } return false; }{code} Because Eclipse classloader ({{org.eclipse.osgi.internal.loader.EquinoxClassLoader}}) has following class hierarchy {noformat} class ModuleClassLoader extends java.lang.ClassLoader implements BundleReference class EquinoxClassLoader extends ModuleClassLoader {noformat} current implementation evaluates to *false*. was (Author: mtomcat_daobi): Since {{org.osgi.framework.BundleReference}} is an interface I'll recommend this version at {{OsgiUtils}} {code:java} private static boolean isBundleReference(Class<?> clazz) { Class<?> c = clazz; while (c != null) { for (Class<?> ifc : c.getInterfaces()) { if (ifc.getName().equals("org.osgi.framework.BundleReference")) { return true; } } c = c.getSuperclass(); } return false; }{code} Because Eclipse classloader ({{org.eclipse.osgi.internal.loader.EquinoxClassLoader}}) has following class hierarchy {noformat} class ModuleClassLoader extends java.lang.ClassLoader implements BundleReference class EquinoxClassLoader extends ModuleClassLoader {noformat} current implementation evaluates to *false*. > OSGI check broken - try to load class BundleEvent always fails > -------------------------------------------------------------- > > Key: COMPRESS-552 > URL: https://issues.apache.org/jira/browse/COMPRESS-552 > Project: Commons Compress > Issue Type: Bug > Components: Compressors > Affects Versions: 1.20 > Reporter: Björn Michael > Priority: Major > Fix For: 1.21 > > > There is a check for running in OSGI env. in {{ZstdUtils}}, {{BrotliUtils}}, > {{LZMAUtils}} and {{XZUtils}} like this: > {code:java} > static { > cachedZstdAvailability = CachedAvailability.DONT_CACHE; > try { > Class.forName("org.osgi.framework.BundleEvent"); > } catch (final Exception ex) { // NOSONAR > setCacheZstdAvailablity(true); > } > } > {code} > Loading the class {{org.osgi.framework.BundleEvent}} always fails because > {{Import-Package}} directive for {{org.osgi.framework}} is missing in > _MANIFEST.MF_. Or it requires another more sophisticated approaches > ([https://stackoverflow.com/q/5879040/1061929]). > Tested with Eclipse 4.14 (org.eclipse.osgi_3.15.100.v20191114-1701.jar) -- This message was sent by Atlassian Jira (v8.3.4#803005)