FELIX-6157 Converter build fails with Java 12

No additional unit tests needed as the existing unit tests already cover 
this when run under Java 12


git-svn-id: https://svn.apache.org/repos/asf/felix/trunk/converter/converter@1865310 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/src/main/java/org/osgi/util/converter/ConvertingImpl.java b/src/main/java/org/osgi/util/converter/ConvertingImpl.java
index 71b8aad..fc409d2 100644
--- a/src/main/java/org/osgi/util/converter/ConvertingImpl.java
+++ b/src/main/java/org/osgi/util/converter/ConvertingImpl.java
@@ -91,11 +91,23 @@
 		Set<Class< ? >> nmv = new HashSet<>(cim.keySet());
 		nmv.addAll(Arrays.<Class< ? >> asList(String.class, Class.class,
 				Comparable.class, CharSequence.class, Map.Entry.class));
+		// The following classes are only available from Java 12 onwards
+		addClassIfAvailable("java.lang.constant.Constable", nmv);
+		addClassIfAvailable("java.lang.constant.ConstantDesc", nmv);
 
 		INTERFACE_IMPLS = Collections.unmodifiableMap(iim);
 		NO_MAP_VIEW_TYPES = Collections.unmodifiableSet(nmv);
 	}
 
+	private static void addClassIfAvailable(String cls, Collection<Class<?>> collection) {
+	    try {
+	        Class<?> clazz = ConvertingImpl.class.getClassLoader().loadClass(cls);
+	        collection.add(clazz);
+	    } catch (Exception ex) {
+	        // Class not available, to nothing
+	    }
+	}
+
 	private final InternalConverter converter;
 	private volatile Object		object;
 	private volatile Class< ? >	sourceClass;
@@ -831,7 +843,7 @@
 					i++;
 					componentType = componentType.getComponentType();
 				}
-				
+
 				if(i == 1) {
 					return Array.newInstance(componentType, 0);
 				} else {