Skip to content

Commit 10a2471

Browse files
quaffwilkinsona
authored andcommitted
Take MethodType into account to deduce main application class
See gh-31828
1 parent add7205 commit 10a2471

File tree

1 file changed

+6
-2
lines changed

1 file changed

+6
-2
lines changed

spring-boot-project/spring-boot/src/main/java/org/springframework/boot/SpringApplication.java

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
package org.springframework.boot;
1818

1919
import java.lang.StackWalker.StackFrame;
20+
import java.lang.invoke.MethodType;
2021
import java.time.Duration;
2122
import java.util.ArrayList;
2223
import java.util.Arrays;
@@ -165,6 +166,7 @@
165166
* @author Brian Clozel
166167
* @author Ethan Rubinson
167168
* @author Chris Bono
169+
* @author Yanming Zhou
168170
* @since 1.0.0
169171
* @see #run(Class, String[])
170172
* @see #run(Class[], String[])
@@ -283,8 +285,10 @@ private Class<?> deduceMainApplicationClass() {
283285
}
284286

285287
private Optional<Class<?>> findMainClass(Stream<StackFrame> stack) {
286-
return stack.filter((frame) -> Objects.equals(frame.getMethodName(), "main")).findFirst()
287-
.map(StackWalker.StackFrame::getDeclaringClass);
288+
return stack
289+
.filter((frame) -> Objects.equals(frame.getMethodName(), "main")
290+
&& Objects.equals(frame.getMethodType(), MethodType.methodType(void.class, String[].class)))
291+
.findFirst().map(StackWalker.StackFrame::getDeclaringClass);
288292
}
289293

290294
/**

0 commit comments

Comments
 (0)