From 715583a0cd69bdfe29c8b7f29e1a08b7dd17df9f Mon Sep 17 00:00:00 2001 From: yokotaso Date: Fri, 8 Mar 2024 16:41:40 +0900 Subject: [PATCH] Fix NullPointerException when JavaSecurityManager enabled if given resource path is not found and JavaSecurityManager is enabled, NullPointerException is thrown internaly. Not only it is simply meaningless exception, but also it might be cause of performance regression. StackTrace is like bellow: java.lang.NullPointerException: Cannot invoke "java.net.URLConnection.getPermission()" because "this.jarFileConnection" is null at org.springframework.boot.loader.net.protocol.jar.JarUrlConnection.getPermission(JarUrlConnection.java:175) at java.base/jdk.internal.loader.URLClassPath.check(URLClassPath.java:553) at java.base/jdk.internal.loader.URLClassPath$Loader.findResource(URLClassPath.java:612) at java.base/jdk.internal.loader.URLClassPath.findResource(URLClassPath.java:296) at java.base/java.net.URLClassLoader$2.run(URLClassLoader.java:629) at java.base/java.net.URLClassLoader$2.run(URLClassLoader.java:627) at java.base/java.security.AccessController.doPrivileged(AccessController.java:399) at java.base/java.net.URLClassLoader.findResource(URLClassLoader.java:626) at org.springframework.boot.loader.net.protocol.jar.JarUrlClassLoader.findResource(JarUrlClassLoader.java:70) at java.base/java.lang.ClassLoader.getResource(ClassLoader.java:1403) at java.base/java.net.URLClassLoader.getResourceAsStream(URLClassLoader.java:290) at java.base/java.lang.Class.getResourceAsStream(Class.java:2850) --- .../boot/loader/net/protocol/jar/JarUrlConnection.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spring-boot-project/spring-boot-tools/spring-boot-loader/src/main/java/org/springframework/boot/loader/net/protocol/jar/JarUrlConnection.java b/spring-boot-project/spring-boot-tools/spring-boot-loader/src/main/java/org/springframework/boot/loader/net/protocol/jar/JarUrlConnection.java index edc18cd44eb1..b188b0a8ddfa 100644 --- a/spring-boot-project/spring-boot-tools/spring-boot-loader/src/main/java/org/springframework/boot/loader/net/protocol/jar/JarUrlConnection.java +++ b/spring-boot-project/spring-boot-tools/spring-boot-loader/src/main/java/org/springframework/boot/loader/net/protocol/jar/JarUrlConnection.java @@ -172,7 +172,7 @@ public Object getContent() throws IOException { @Override public Permission getPermission() throws IOException { - return this.jarFileConnection.getPermission(); + return (this.jarFileConnection != null) ? this.jarFileConnection.getPermission() : null; } @Override