|
|
|
@ -24,9 +24,9 @@ import java.net.URLConnection; |
|
|
|
import java.security.AccessController; |
|
|
|
import java.security.AccessController; |
|
|
|
import java.security.PrivilegedExceptionAction; |
|
|
|
import java.security.PrivilegedExceptionAction; |
|
|
|
import java.util.Enumeration; |
|
|
|
import java.util.Enumeration; |
|
|
|
|
|
|
|
import java.util.jar.JarFile; |
|
|
|
|
|
|
|
|
|
|
|
import org.springframework.boot.loader.jar.Handler; |
|
|
|
import org.springframework.boot.loader.jar.Handler; |
|
|
|
import org.springframework.boot.loader.jar.JarFile; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
/** |
|
|
|
* {@link ClassLoader} used by the {@link Launcher}. |
|
|
|
* {@link ClassLoader} used by the {@link Launcher}. |
|
|
|
@ -131,8 +131,10 @@ public class LaunchedURLClassLoader extends URLClassLoader { |
|
|
|
String classEntryName = className.replace(".", "/") + ".class"; |
|
|
|
String classEntryName = className.replace(".", "/") + ".class"; |
|
|
|
for (URL url : getURLs()) { |
|
|
|
for (URL url : getURLs()) { |
|
|
|
try { |
|
|
|
try { |
|
|
|
if (url.getContent() instanceof JarFile) { |
|
|
|
URLConnection connection = url.openConnection(); |
|
|
|
JarFile jarFile = (JarFile) url.getContent(); |
|
|
|
if (connection instanceof JarURLConnection) { |
|
|
|
|
|
|
|
JarFile jarFile = ((JarURLConnection) connection) |
|
|
|
|
|
|
|
.getJarFile(); |
|
|
|
if (jarFile.getEntry(classEntryName) != null |
|
|
|
if (jarFile.getEntry(classEntryName) != null |
|
|
|
&& jarFile.getEntry(packageEntryName) != null |
|
|
|
&& jarFile.getEntry(packageEntryName) != null |
|
|
|
&& jarFile.getManifest() != null) { |
|
|
|
&& jarFile.getManifest() != null) { |
|
|
|
@ -175,8 +177,8 @@ public class LaunchedURLClassLoader extends URLClassLoader { |
|
|
|
|
|
|
|
|
|
|
|
private void clearCache(URLConnection connection) throws IOException { |
|
|
|
private void clearCache(URLConnection connection) throws IOException { |
|
|
|
Object jarFile = ((JarURLConnection) connection).getJarFile(); |
|
|
|
Object jarFile = ((JarURLConnection) connection).getJarFile(); |
|
|
|
if (jarFile instanceof JarFile) { |
|
|
|
if (jarFile instanceof org.springframework.boot.loader.jar.JarFile) { |
|
|
|
((JarFile) jarFile).clearCache(); |
|
|
|
((org.springframework.boot.loader.jar.JarFile) jarFile).clearCache(); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|