Skip to content

Commit f6f3d84

Browse files
committed
ClassUtils: trap more class loading errors
No class loading error should crash the thread, ever. Ops just switched to Java 8. Unfortunately, this change crashed the context startup in the following way: java.lang.UnsupportedClassVersionError: net/imagej/ops/DefaultNamespaceService : Unsupported major.minor version 52.0 at java.lang.ClassLoader.defineClass1(Native Method) at java.lang.ClassLoader.defineClass(ClassLoader.java:800) at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) at java.net.URLClassLoader.defineClass(URLClassLoader.java:449) at java.net.URLClassLoader.access$100(URLClassLoader.java:71) at java.net.URLClassLoader$1.run(URLClassLoader.java:361) at java.net.URLClassLoader$1.run(URLClassLoader.java:355) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:354) at java.lang.ClassLoader.loadClass(ClassLoader.java:425) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308) at java.lang.ClassLoader.loadClass(ClassLoader.java:358) at org.scijava.util.ClassUtils.loadClass(ClassUtils.java:164) at org.scijava.plugin.PluginInfo.loadClass(PluginInfo.java:283) at org.scijava.plugin.PluginInfo.getIdentifier(PluginInfo.java:320) at org.scijava.AbstractUIDetails.getTitle(AbstractUIDetails.java:108) at org.scijava.AbstractUIDetails.compareTo(AbstractUIDetails.java:237) at org.scijava.AbstractUIDetails.compareTo(AbstractUIDetails.java:43) at java.util.ComparableTimSort.binarySort(ComparableTimSort.java:232) at java.util.ComparableTimSort.sort(ComparableTimSort.java:176) at java.util.ComparableTimSort.sort(ComparableTimSort.java:146) at java.util.Arrays.sort(Arrays.java:472) at java.util.Collections.sort(Collections.java:155) at org.scijava.object.SortedObjectIndex.mergeAfterSorting(SortedObjectIndex.java:97) at org.scijava.object.SortedObjectIndex.addAll(SortedObjectIndex.java:83) at org.scijava.plugin.PluginIndex.discover(PluginIndex.java:108) at org.scijava.Context.<init>(Context.java:261)
1 parent 7c20295 commit f6f3d84

File tree

1 file changed

+5
-1
lines changed

1 file changed

+5
-1
lines changed

src/main/java/org/scijava/util/ClassUtils.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -163,7 +163,11 @@ public static Class<?> loadClass(final String name,
163163
: classLoader;
164164
return cl.loadClass(className);
165165
}
166-
catch (final ClassNotFoundException e) {
166+
catch (final Throwable t) {
167+
// NB: Do not allow any failure to load the class to crash us.
168+
// Not ClassNotFoundException.
169+
// Not NoClassDefFoundError.
170+
// Not UnsupportedClassVersionError!
167171
return null;
168172
}
169173
}

0 commit comments

Comments
 (0)