summaryrefslogtreecommitdiff
path: root/tests/signature/api-check/src/java/android/signature/cts/api/BootClassPathClassesProvider.java
diff options
context:
space:
mode:
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.java11
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