< prev index next >

src/hotspot/share/memory/filemap.cpp

Print this page

*** 600,611 **** } } return path_array; } ! bool FileMapInfo::fail(const char* msg, const char* name) { ClassLoader::trace_class_path(msg, name); return false; } bool FileMapInfo::check_paths(int shared_path_start_idx, int num_paths, GrowableArray<const char*>* rp_array) { int i = 0; --- 600,614 ---- } } return path_array; } ! bool FileMapInfo::classpath_failure(const char* msg, const char* name) { ClassLoader::trace_class_path(msg, name); + if (PrintSharedArchiveAndExit) { + MetaspaceShared::set_archive_loading_failed(); + } return false; } bool FileMapInfo::check_paths(int shared_path_start_idx, int num_paths, GrowableArray<const char*>* rp_array) { int i = 0;
*** 676,705 **** } } if (mismatch) { // The paths are different ! return fail("[BOOT classpath mismatch, actual =", runtime_boot_path); } return true; } bool FileMapInfo::validate_app_class_paths(int shared_app_paths_len) { const char *appcp = Arguments::get_appclasspath(); assert(appcp != NULL, "NULL app classpath"); int rp_len = num_paths(appcp); bool mismatch = false; if (rp_len < shared_app_paths_len) { ! return fail("Run time APP classpath is shorter than the one at dump time: ", appcp); } if (shared_app_paths_len != 0 && rp_len != 0) { // Prefix is OK: E.g., dump with -cp foo.jar, but run with -cp foo.jar:bar.jar. ResourceMark rm; GrowableArray<const char*>* rp_array = create_path_array(appcp); if (rp_array->length() == 0) { // None of the jar file specified in the runtime -cp exists. ! return fail("None of the jar file specified in the runtime -cp exists: -Djava.class.path=", appcp); } // Handling of non-existent entries in the classpath: we eliminate all the non-existent // entries from both the dump time classpath (ClassLoader::update_class_path_entry_list) // and the runtime classpath (FileMapInfo::create_path_array), and check the remaining --- 679,708 ---- } } if (mismatch) { // The paths are different ! return classpath_failure("[BOOT classpath mismatch, actual =", runtime_boot_path); } return true; } bool FileMapInfo::validate_app_class_paths(int shared_app_paths_len) { const char *appcp = Arguments::get_appclasspath(); assert(appcp != NULL, "NULL app classpath"); int rp_len = num_paths(appcp); bool mismatch = false; if (rp_len < shared_app_paths_len) { ! return classpath_failure("Run time APP classpath is shorter than the one at dump time: ", appcp); } if (shared_app_paths_len != 0 && rp_len != 0) { // Prefix is OK: E.g., dump with -cp foo.jar, but run with -cp foo.jar:bar.jar. ResourceMark rm; GrowableArray<const char*>* rp_array = create_path_array(appcp); if (rp_array->length() == 0) { // None of the jar file specified in the runtime -cp exists. ! return classpath_failure("None of the jar file specified in the runtime -cp exists: -Djava.class.path=", appcp); } // Handling of non-existent entries in the classpath: we eliminate all the non-existent // entries from both the dump time classpath (ClassLoader::update_class_path_entry_list) // and the runtime classpath (FileMapInfo::create_path_array), and check the remaining
*** 710,720 **** // run 2: -cp x.jar:NE4:b.jar -> x.jar:b.jar -> mismatched int j = header()->app_class_paths_start_index(); mismatch = check_paths(j, shared_app_paths_len, rp_array); if (mismatch) { ! return fail("[APP classpath mismatch, actual: -Djava.class.path=", appcp); } } return true; } --- 713,723 ---- // run 2: -cp x.jar:NE4:b.jar -> x.jar:b.jar -> mismatched int j = header()->app_class_paths_start_index(); mismatch = check_paths(j, shared_app_paths_len, rp_array); if (mismatch) { ! return classpath_failure("[APP classpath mismatch, actual: -Djava.class.path=", appcp); } } return true; }
< prev index next >