< prev index next >
src/hotspot/share/classfile/systemDictionary.cpp
Print this page
rev 51756 : 8205611: Improve the wording of LinkageErrors to include module and class loader information
Summary: Clean up the wording of loader constraint violations to include the module and class loader information.
Reviewed-by: coleenp, goetz, hseigel
*** 2089,2101 ****
// also hold array classes.
assert(check->is_instance_klass(), "noninstance in systemdictionary");
if ((defining == true) || (k != check)) {
throwException = true;
! ss.print("loader %s", java_lang_ClassLoader::describe_external(class_loader()));
! ss.print(" attempted duplicate %s definition for %s.",
! k->external_kind(), k->external_name());
} else {
return;
}
}
--- 2089,2101 ----
// also hold array classes.
assert(check->is_instance_klass(), "noninstance in systemdictionary");
if ((defining == true) || (k != check)) {
throwException = true;
! ss.print("loader %s", loader_data->loader_name_and_id());
! ss.print(" attempted duplicate %s definition for %s. (%s)",
! k->external_kind(), k->external_name(), k->class_in_module_of_loader(false, true));
} else {
return;
}
}
*** 2105,2123 ****
#endif
if (throwException == false) {
if (constraints()->check_or_update(k, class_loader, name) == false) {
throwException = true;
! ss.print("loader constraint violation: loader %s",
! java_lang_ClassLoader::describe_external(class_loader()));
ss.print(" wants to load %s %s.",
k->external_kind(), k->external_name());
Klass *existing_klass = constraints()->find_constrained_klass(name, class_loader);
if (existing_klass->class_loader() != class_loader()) {
! ss.print(" A different %s with the same name was previously loaded by %s.",
existing_klass->external_kind(),
! java_lang_ClassLoader::describe_external(existing_klass->class_loader()));
}
}
}
}
--- 2105,2125 ----
#endif
if (throwException == false) {
if (constraints()->check_or_update(k, class_loader, name) == false) {
throwException = true;
! ss.print("loader constraint violation: loader %s", loader_data->loader_name_and_id());
ss.print(" wants to load %s %s.",
k->external_kind(), k->external_name());
Klass *existing_klass = constraints()->find_constrained_klass(name, class_loader);
if (existing_klass->class_loader() != class_loader()) {
! ss.print(" A different %s with the same name was previously loaded by %s. (%s)",
existing_klass->external_kind(),
! existing_klass->class_loader_data()->loader_name_and_id(),
! existing_klass->class_in_module_of_loader(false, true));
! } else {
! ss.print(" (%s)", k->class_in_module_of_loader(false, true));
}
}
}
}
< prev index next >