diff options
Diffstat (limited to 'tests/signature/api-check/src/java/android/signature/cts/api/BootClassPathClassesProvider.java')
-rw-r--r-- | tests/signature/api-check/src/java/android/signature/cts/api/BootClassPathClassesProvider.java | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/tests/signature/api-check/src/java/android/signature/cts/api/BootClassPathClassesProvider.java b/tests/signature/api-check/src/java/android/signature/cts/api/BootClassPathClassesProvider.java index d1f019b5078..e0f22e24a57 100644 --- a/tests/signature/api-check/src/java/android/signature/cts/api/BootClassPathClassesProvider.java +++ b/tests/signature/api-check/src/java/android/signature/cts/api/BootClassPathClassesProvider.java @@ -29,6 +29,7 @@ import java.io.FileOutputStream; import java.io.InputStream; import java.io.OutputStream; import java.util.Arrays; +import java.util.Objects; import java.util.stream.Stream; @SuppressWarnings("deprecation") @@ -38,7 +39,8 @@ public class BootClassPathClassesProvider extends ClassProvider { @Override public Stream<Class<?>> getAllClasses() { maybeAttachJvmtiAgent(); - return Arrays.stream(getClassloaderDescriptors(Object.class.getClassLoader())) + return (Stream<Class<?>>) + Arrays.stream(getClassloaderDescriptors(Object.class.getClassLoader())) .map(descriptor -> { String classname = descriptor.replace('/', '.'); // omit L and ; at the front and at the end @@ -48,9 +50,12 @@ public class BootClassPathClassesProvider extends ClassProvider { try { return getClass(classname); } catch (ClassNotFoundException e) { - throw new RuntimeException("Cannot load " + classname, e); + // It could be that a class failed to verify. + // No process will be able to load it, so it's ok to silently ignore. + return null; } - }); + }) + .filter(Objects::nonNull); } @Override |