Avoid Illegal reflective access warnings with devtools

This commit improves RestartClassLoader to use a method introduced in
SmartClassLoader to avoid triggering a warning on Java 11 and later.

See https://github.com/spring-projects/spring-framework/issues/26403

Closes gh-24857
This commit is contained in:
Stephane Nicoll
2021-01-19 14:57:09 +01:00
parent 698672e1cb
commit 75fc896321
2 changed files with 18 additions and 2 deletions

View File

@@ -1,5 +1,5 @@
/*
* Copyright 2012-2020 the original author or authors.
* Copyright 2012-2021 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -22,6 +22,7 @@ import java.net.URL;
import java.net.URLClassLoader;
import java.security.AccessController;
import java.security.PrivilegedAction;
import java.security.ProtectionDomain;
import java.util.Enumeration;
import org.apache.commons.logging.Log;
@@ -167,6 +168,11 @@ public class RestartClassLoader extends URLClassLoader implements SmartClassLoad
});
}
@Override
public Class<?> publicDefineClass(String name, byte[] b, ProtectionDomain protectionDomain) {
return defineClass(name, b, 0, b.length, protectionDomain);
}
private URL createFileUrl(String name, ClassLoaderFile file) {
try {
return new URL("reloaded", null, -1, "/" + name, new ClassLoaderFileURLStreamHandler(file));