8302791: Add specific ClassLoader object to Proxy IllegalArgumentException message
Reviewed-by: alanb, mchung
This commit is contained in:
parent
b5b5cba7fe
commit
9f9d678591
src/java.base/share/classes
@ -407,6 +407,11 @@ public abstract class ClassLoader {
|
||||
return nid;
|
||||
}
|
||||
|
||||
// Returns nameAndId string for exception message printing
|
||||
String nameAndId() {
|
||||
return nameAndId;
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates a new class loader of the specified name and using the
|
||||
* specified parent class loader for delegation.
|
||||
|
@ -2663,6 +2663,10 @@ public final class System {
|
||||
Continuation continuation) {
|
||||
return StackWalker.newInstance(options, null, contScope, continuation);
|
||||
}
|
||||
|
||||
public String getLoaderNameID(ClassLoader loader) {
|
||||
return loader.nameAndId();
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
@ -878,7 +878,7 @@ public class Proxy implements java.io.Serializable {
|
||||
}
|
||||
if (type != c) {
|
||||
throw new IllegalArgumentException(c.getName() +
|
||||
" referenced from a method is not visible from class loader");
|
||||
" referenced from a method is not visible from class loader: " + JLA.getLoaderNameID(ld));
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -564,4 +564,9 @@ public interface JavaLangAccess {
|
||||
StackWalker newStackWalkerInstance(Set<StackWalker.Option> options,
|
||||
ContinuationScope contScope,
|
||||
Continuation continuation);
|
||||
/**
|
||||
* Returns '<loader-name>' @<id> if classloader has a name
|
||||
* explicitly set otherwise <qualified-class-name> @<id>
|
||||
*/
|
||||
String getLoaderNameID(ClassLoader loader);
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user