Assorted fixes for running frameworks apps
- Adding Heap::target_utililization_
- Convert ClassNotFoundError to ClassNotFoundException in Class.forName
- Finish String::GetHashCode
- Changed Runtime.gc to unimplemented
- Disable preload simulation in oat_process
- Empty native placeholder for org.apache.harmony.dalvik.ddmc.DdmServer
- Bonus: Fix problem with reflective invocation of constructors and private methods
Change-Id: If11b273e2f82e8e0fa7161a756098514e1156a19
diff --git a/src/java_lang_Class.cc b/src/java_lang_Class.cc
index d93d3e6..4fe3191 100644
--- a/src/java_lang_Class.cc
+++ b/src/java_lang_Class.cc
@@ -48,6 +48,15 @@
ClassLoader* class_loader = down_cast<ClassLoader*>(loader);
ClassLinker* class_linker = Runtime::Current()->GetClassLinker();
Class* c = class_linker->FindClass(descriptor.c_str(), class_loader);
+ if (c == NULL) {
+ // Convert NoClassDefFoundError to ClassNotFoundException
+ // TODO: chain exceptions?
+ DCHECK(env->ExceptionCheck());
+ env->ExceptionClear();
+ Thread::Current()->ThrowNewException("Ljava/lang/ClassNotFoundException;",
+ "%s", name.c_str());
+ return NULL;
+ }
if (initialize) {
class_linker->EnsureInitialized(c, true);
}