public class org.springframework.boot.system.ApplicationHome
minor version: 0
major version: 59
flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
this_class: org.springframework.boot.system.ApplicationHome
super_class: java.lang.Object
{
private final java.io.File source;
descriptor: Ljava/io/File;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private final java.io.File dir;
descriptor: Ljava/io/File;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
public void <init>();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=1, args_size=1
start local 0 0: aload 0
aconst_null
invokespecial org.springframework.boot.system.ApplicationHome.<init>:(Ljava/lang/Class;)V
1: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lorg/springframework/boot/system/ApplicationHome;
public void <init>(java.lang.Class<?>);
descriptor: (Ljava/lang/Class;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=2, args_size=2
start local 0 start local 1 0: aload 0
invokespecial java.lang.Object.<init>:()V
1: aload 0
aload 0
aload 1
ifnull 2
aload 1
goto 3
StackMap locals: org.springframework.boot.system.ApplicationHome java.lang.Class
StackMap stack: org.springframework.boot.system.ApplicationHome org.springframework.boot.system.ApplicationHome
2: aload 0
invokevirtual org.springframework.boot.system.ApplicationHome.getStartClass:()Ljava/lang/Class;
StackMap locals: org.springframework.boot.system.ApplicationHome java.lang.Class
StackMap stack: org.springframework.boot.system.ApplicationHome org.springframework.boot.system.ApplicationHome java.lang.Class
3: invokevirtual org.springframework.boot.system.ApplicationHome.findSource:(Ljava/lang/Class;)Ljava/io/File;
putfield org.springframework.boot.system.ApplicationHome.source:Ljava/io/File;
4: aload 0
aload 0
aload 0
getfield org.springframework.boot.system.ApplicationHome.source:Ljava/io/File;
invokevirtual org.springframework.boot.system.ApplicationHome.findHomeDir:(Ljava/io/File;)Ljava/io/File;
putfield org.springframework.boot.system.ApplicationHome.dir:Ljava/io/File;
5: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 6 0 this Lorg/springframework/boot/system/ApplicationHome;
0 6 1 sourceClass Ljava/lang/Class<*>;
Signature: (Ljava/lang/Class<*>;)V
MethodParameters:
Name Flags
sourceClass
private java.lang.Class<?> getStartClass();
descriptor: ()Ljava/lang/Class;
flags: (0x0002) ACC_PRIVATE
Code:
stack=3, locals=2, args_size=1
start local 0 0: aload 0
invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
invokevirtual java.lang.Class.getClassLoader:()Ljava/lang/ClassLoader;
astore 1
start local 1 1: aload 0
aload 1
ldc "META-INF/MANIFEST.MF"
invokevirtual java.lang.ClassLoader.getResources:(Ljava/lang/String;)Ljava/util/Enumeration;
invokevirtual org.springframework.boot.system.ApplicationHome.getStartClass:(Ljava/util/Enumeration;)Ljava/lang/Class;
2: areturn
end local 1 3: StackMap locals:
StackMap stack: java.lang.Exception
pop
4: aconst_null
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 5 0 this Lorg/springframework/boot/system/ApplicationHome;
1 3 1 classLoader Ljava/lang/ClassLoader;
Exception table:
from to target type
0 2 3 Class java.lang.Exception
Signature: ()Ljava/lang/Class<*>;
private java.lang.Class<?> getStartClass(java.util.Enumeration<java.net.URL>);
descriptor: (Ljava/util/Enumeration;)Ljava/lang/Class;
flags: (0x0002) ACC_PRIVATE
Code:
stack=3, locals=7, args_size=2
start local 0 start local 1 0: goto 16
1: StackMap locals:
StackMap stack:
aconst_null
astore 2
aconst_null
astore 3
2: aload 1
invokeinterface java.util.Enumeration.nextElement:()Ljava/lang/Object;
checkcast java.net.URL
invokevirtual java.net.URL.openStream:()Ljava/io/InputStream;
astore 4
start local 4 3: new java.util.jar.Manifest
dup
aload 4
invokespecial java.util.jar.Manifest.<init>:(Ljava/io/InputStream;)V
astore 5
start local 5 4: aload 5
invokevirtual java.util.jar.Manifest.getMainAttributes:()Ljava/util/jar/Attributes;
ldc "Start-Class"
invokevirtual java.util.jar.Attributes.getValue:(Ljava/lang/String;)Ljava/lang/String;
astore 6
start local 6 5: aload 6
ifnull 9
6: aload 6
aload 0
invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
invokevirtual java.lang.Class.getClassLoader:()Ljava/lang/ClassLoader;
invokestatic org.springframework.util.ClassUtils.forName:(Ljava/lang/String;Ljava/lang/ClassLoader;)Ljava/lang/Class;
7: aload 4
ifnull 8
aload 4
invokevirtual java.io.InputStream.close:()V
8: StackMap locals: org.springframework.boot.system.ApplicationHome java.util.Enumeration java.lang.Throwable java.lang.Throwable java.io.InputStream java.util.jar.Manifest java.lang.String
StackMap stack: java.lang.Class
areturn
end local 6 end local 5 9: StackMap locals:
StackMap stack:
aload 4
ifnull 16
aload 4
invokevirtual java.io.InputStream.close:()V
goto 16
StackMap locals:
StackMap stack: java.lang.Throwable
10: astore 2
aload 4
ifnull 11
aload 4
invokevirtual java.io.InputStream.close:()V
end local 4 StackMap locals:
StackMap stack:
11: aload 2
athrow
StackMap locals:
StackMap stack: java.lang.Throwable
12: astore 3
aload 2
ifnonnull 13
aload 3
astore 2
goto 14
StackMap locals:
StackMap stack:
13: aload 2
aload 3
if_acmpeq 14
aload 2
aload 3
invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
StackMap locals:
StackMap stack:
14: aload 2
athrow
15: StackMap locals: org.springframework.boot.system.ApplicationHome java.util.Enumeration
StackMap stack: java.lang.Exception
pop
16: StackMap locals:
StackMap stack:
aload 1
invokeinterface java.util.Enumeration.hasMoreElements:()Z
ifne 1
17: aconst_null
areturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 18 0 this Lorg/springframework/boot/system/ApplicationHome;
0 18 1 manifestResources Ljava/util/Enumeration<Ljava/net/URL;>;
3 11 4 inputStream Ljava/io/InputStream;
4 9 5 manifest Ljava/util/jar/Manifest;
5 9 6 startClass Ljava/lang/String;
Exception table:
from to target type
3 7 10 any
2 8 12 any
9 12 12 any
1 8 15 Class java.lang.Exception
9 15 15 Class java.lang.Exception
Signature: (Ljava/util/Enumeration<Ljava/net/URL;>;)Ljava/lang/Class<*>;
MethodParameters:
Name Flags
manifestResources
private java.io.File findSource(java.lang.Class<?>);
descriptor: (Ljava/lang/Class;)Ljava/io/File;
flags: (0x0002) ACC_PRIVATE
Code:
stack=2, locals=6, args_size=2
start local 0 start local 1 0: aload 1
ifnull 1
aload 1
invokevirtual java.lang.Class.getProtectionDomain:()Ljava/security/ProtectionDomain;
goto 2
StackMap locals:
StackMap stack:
1: aconst_null
StackMap locals:
StackMap stack: java.security.ProtectionDomain
2: astore 2
start local 2 3: aload 2
ifnull 4
aload 2
invokevirtual java.security.ProtectionDomain.getCodeSource:()Ljava/security/CodeSource;
goto 5
StackMap locals: java.security.ProtectionDomain
StackMap stack:
4: aconst_null
StackMap locals:
StackMap stack: java.security.CodeSource
5: astore 3
start local 3 6: aload 3
ifnull 7
aload 3
invokevirtual java.security.CodeSource.getLocation:()Ljava/net/URL;
goto 8
StackMap locals: java.security.CodeSource
StackMap stack:
7: aconst_null
StackMap locals:
StackMap stack: java.net.URL
8: astore 4
start local 4 9: aload 4
ifnull 10
aload 0
aload 4
invokevirtual org.springframework.boot.system.ApplicationHome.findSource:(Ljava/net/URL;)Ljava/io/File;
goto 11
StackMap locals: java.net.URL
StackMap stack:
10: aconst_null
StackMap locals:
StackMap stack: java.io.File
11: astore 5
start local 5 12: aload 5
ifnull 16
aload 5
invokevirtual java.io.File.exists:()Z
ifeq 16
aload 0
invokevirtual org.springframework.boot.system.ApplicationHome.isUnitTest:()Z
ifne 16
13: aload 5
invokevirtual java.io.File.getAbsoluteFile:()Ljava/io/File;
14: areturn
end local 5 end local 4 end local 3 end local 2 15: StackMap locals: org.springframework.boot.system.ApplicationHome java.lang.Class
StackMap stack: java.lang.Exception
pop
16: StackMap locals:
StackMap stack:
aconst_null
areturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 17 0 this Lorg/springframework/boot/system/ApplicationHome;
0 17 1 sourceClass Ljava/lang/Class<*>;
3 15 2 domain Ljava/security/ProtectionDomain;
6 15 3 codeSource Ljava/security/CodeSource;
9 15 4 location Ljava/net/URL;
12 15 5 source Ljava/io/File;
Exception table:
from to target type
0 14 15 Class java.lang.Exception
Signature: (Ljava/lang/Class<*>;)Ljava/io/File;
MethodParameters:
Name Flags
sourceClass
private boolean isUnitTest();
descriptor: ()Z
flags: (0x0002) ACC_PRIVATE
Code:
stack=2, locals=3, args_size=1
start local 0 0: invokestatic java.lang.Thread.currentThread:()Ljava/lang/Thread;
invokevirtual java.lang.Thread.getStackTrace:()[Ljava/lang/StackTraceElement;
astore 1
start local 1 1: aload 1
arraylength
iconst_1
isub
istore 2
start local 2 2: goto 6
3: StackMap locals: java.lang.StackTraceElement[] int
StackMap stack:
aload 1
iload 2
aaload
invokevirtual java.lang.StackTraceElement.getClassName:()Ljava/lang/String;
ldc "org.junit."
invokevirtual java.lang.String.startsWith:(Ljava/lang/String;)Z
ifeq 5
4: iconst_1
ireturn
5: StackMap locals:
StackMap stack:
iinc 2 -1
StackMap locals:
StackMap stack:
6: iload 2
ifge 3
end local 2 end local 1 7: goto 9
8: StackMap locals: org.springframework.boot.system.ApplicationHome
StackMap stack: java.lang.Exception
pop
9: StackMap locals:
StackMap stack:
iconst_0
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 10 0 this Lorg/springframework/boot/system/ApplicationHome;
1 7 1 stackTrace [Ljava/lang/StackTraceElement;
2 7 2 i I
Exception table:
from to target type
0 4 8 Class java.lang.Exception
5 7 8 Class java.lang.Exception
private java.io.File findSource(java.net.URL);
descriptor: (Ljava/net/URL;)Ljava/io/File;
flags: (0x0002) ACC_PRIVATE
Code:
stack=3, locals=3, args_size=2
start local 0 start local 1 0: aload 1
invokevirtual java.net.URL.openConnection:()Ljava/net/URLConnection;
astore 2
start local 2 1: aload 2
instanceof java.net.JarURLConnection
ifeq 3
2: aload 0
aload 2
checkcast java.net.JarURLConnection
invokevirtual java.net.JarURLConnection.getJarFile:()Ljava/util/jar/JarFile;
invokevirtual org.springframework.boot.system.ApplicationHome.getRootJarFile:(Ljava/util/jar/JarFile;)Ljava/io/File;
areturn
3: StackMap locals: java.net.URLConnection
StackMap stack:
new java.io.File
dup
aload 1
invokevirtual java.net.URL.toURI:()Ljava/net/URI;
invokespecial java.io.File.<init>:(Ljava/net/URI;)V
areturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 this Lorg/springframework/boot/system/ApplicationHome;
0 4 1 location Ljava/net/URL;
1 4 2 connection Ljava/net/URLConnection;
Exceptions:
throws java.io.IOException, java.net.URISyntaxException
MethodParameters:
Name Flags
location
private java.io.File getRootJarFile(java.util.jar.JarFile);
descriptor: (Ljava/util/jar/JarFile;)Ljava/io/File;
flags: (0x0002) ACC_PRIVATE
Code:
stack=3, locals=4, args_size=2
start local 0 start local 1 0: aload 1
invokevirtual java.util.jar.JarFile.getName:()Ljava/lang/String;
astore 2
start local 2 1: aload 2
ldc "!/"
invokevirtual java.lang.String.indexOf:(Ljava/lang/String;)I
istore 3
start local 3 2: iload 3
ifle 4
3: aload 2
iconst_0
iload 3
invokevirtual java.lang.String.substring:(II)Ljava/lang/String;
astore 2
4: StackMap locals: java.lang.String int
StackMap stack:
new java.io.File
dup
aload 2
invokespecial java.io.File.<init>:(Ljava/lang/String;)V
areturn
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 5 0 this Lorg/springframework/boot/system/ApplicationHome;
0 5 1 jarFile Ljava/util/jar/JarFile;
1 5 2 name Ljava/lang/String;
2 5 3 separator I
MethodParameters:
Name Flags
jarFile
private java.io.File findHomeDir(java.io.File);
descriptor: (Ljava/io/File;)Ljava/io/File;
flags: (0x0002) ACC_PRIVATE
Code:
stack=3, locals=3, args_size=2
start local 0 start local 1 0: aload 1
astore 2
start local 2 1: aload 2
ifnull 2
aload 2
goto 3
StackMap locals: java.io.File
StackMap stack:
2: aload 0
invokevirtual org.springframework.boot.system.ApplicationHome.findDefaultHomeDir:()Ljava/io/File;
StackMap locals:
StackMap stack: java.io.File
3: astore 2
4: aload 2
invokevirtual java.io.File.isFile:()Z
ifeq 6
5: aload 2
invokevirtual java.io.File.getParentFile:()Ljava/io/File;
astore 2
6: StackMap locals:
StackMap stack:
aload 2
invokevirtual java.io.File.exists:()Z
ifeq 7
aload 2
goto 8
StackMap locals:
StackMap stack:
7: new java.io.File
dup
ldc "."
invokespecial java.io.File.<init>:(Ljava/lang/String;)V
StackMap locals:
StackMap stack: java.io.File
8: astore 2
9: aload 2
invokevirtual java.io.File.getAbsoluteFile:()Ljava/io/File;
areturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 10 0 this Lorg/springframework/boot/system/ApplicationHome;
0 10 1 source Ljava/io/File;
1 10 2 homeDir Ljava/io/File;
MethodParameters:
Name Flags
source
private java.io.File findDefaultHomeDir();
descriptor: ()Ljava/io/File;
flags: (0x0002) ACC_PRIVATE
Code:
stack=3, locals=2, args_size=1
start local 0 0: ldc "user.dir"
invokestatic java.lang.System.getProperty:(Ljava/lang/String;)Ljava/lang/String;
astore 1
start local 1 1: new java.io.File
dup
aload 1
invokestatic org.springframework.util.StringUtils.hasLength:(Ljava/lang/String;)Z
ifeq 2
aload 1
goto 3
StackMap locals: org.springframework.boot.system.ApplicationHome java.lang.String
StackMap stack: new 1 new 1
2: ldc "."
StackMap locals: org.springframework.boot.system.ApplicationHome java.lang.String
StackMap stack: new 1 new 1 java.lang.String
3: invokespecial java.io.File.<init>:(Ljava/lang/String;)V
areturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 this Lorg/springframework/boot/system/ApplicationHome;
1 4 1 userDir Ljava/lang/String;
public java.io.File getSource();
descriptor: ()Ljava/io/File;
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield org.springframework.boot.system.ApplicationHome.source:Ljava/io/File;
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/springframework/boot/system/ApplicationHome;
public java.io.File getDir();
descriptor: ()Ljava/io/File;
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield org.springframework.boot.system.ApplicationHome.dir:Ljava/io/File;
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/springframework/boot/system/ApplicationHome;
public java.lang.String toString();
descriptor: ()Ljava/lang/String;
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
invokevirtual org.springframework.boot.system.ApplicationHome.getDir:()Ljava/io/File;
invokevirtual java.io.File.toString:()Ljava/lang/String;
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/springframework/boot/system/ApplicationHome;
}
SourceFile: "ApplicationHome.java"