Skip to content

Commit 03746ee

Browse files
committed
Don't early init logging, causing main class discovery to fail
1 parent 7152b96 commit 03746ee

File tree

2 files changed

+14
-11
lines changed

2 files changed

+14
-11
lines changed

grails-core/src/main/groovy/grails/boot/config/GrailsAutoConfiguration.groovy

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@ import grails.core.GrailsApplication
2020
import grails.boot.config.tools.ClassPathScanner
2121
import grails.core.GrailsApplicationClass
2222
import groovy.transform.CompileStatic
23-
import groovy.util.logging.Slf4j
2423
import org.grails.compiler.injection.AbstractGrailsArtefactTransformer
2524
import org.grails.spring.aop.autoproxy.GroovyAwareAspectJAwareAdvisorAutoProxyCreator
2625
import org.springframework.aop.config.AopConfigUtils
@@ -39,20 +38,20 @@ import java.lang.reflect.Field
3938
*
4039
*/
4140
@CompileStatic
42-
@Slf4j
41+
// WARNING: Never add logging to the source of this class, early initialization causes problems
4342
class GrailsAutoConfiguration implements GrailsApplicationClass, ApplicationContextAware {
4443

45-
private static final String APC_PRIORITY_LIST_FIELD = "APC_PRIORITY_LIST";
44+
private static final String APC_PRIORITY_LIST_FIELD = "APC_PRIORITY_LIST"
4645

4746
static {
4847
try {
4948
// patch AopConfigUtils if possible
50-
Field field = AopConfigUtils.class.getDeclaredField(APC_PRIORITY_LIST_FIELD);
49+
Field field = AopConfigUtils.class.getDeclaredField(APC_PRIORITY_LIST_FIELD)
5150
if(field != null) {
52-
field.setAccessible(true);
53-
Object obj = field.get(null);
54-
List<Class<?>> list = (List<Class<?>>) obj;
55-
list.add(GroovyAwareAspectJAwareAdvisorAutoProxyCreator.class);
51+
field.setAccessible(true)
52+
Object obj = field.get(null)
53+
List<Class<?>> list = (List<Class<?>>) obj
54+
list.add(GroovyAwareAspectJAwareAdvisorAutoProxyCreator.class)
5655
}
5756
} catch (Throwable e) {
5857
// ignore

grails-core/src/main/groovy/org/grails/compiler/injection/ApplicationClassInjector.groovy

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -34,13 +34,14 @@ import org.codehaus.groovy.ast.stmt.BlockStatement
3434
import org.codehaus.groovy.ast.stmt.ExpressionStatement
3535
import org.codehaus.groovy.ast.stmt.ReturnStatement
3636
import org.codehaus.groovy.ast.stmt.Statement
37+
import org.codehaus.groovy.ast.tools.GeneralUtils
3738
import org.codehaus.groovy.classgen.GeneratorContext
3839
import org.codehaus.groovy.control.SourceUnit
3940
import org.grails.core.artefact.ApplicationArtefactHandler
4041
import org.grails.io.support.GrailsResourceUtils
4142
import org.grails.io.support.UrlResource
4243
import org.springframework.util.ClassUtils
43-
44+
import static org.codehaus.groovy.ast.tools.GeneralUtils.*
4445
import java.lang.reflect.Modifier
4546
/**
4647
* Injector for the 'Application' class
@@ -86,8 +87,11 @@ class ApplicationClassInjector implements GrailsArtefactClassInjector {
8687
def enableAgentMethodCall = new MethodCallExpression(new ClassExpression(ClassHelper.make(Support)), "enableAgentIfNotPresent", arguments)
8788
def methodCallStatement = new ExpressionStatement(enableAgentMethodCall)
8889

89-
List<Statement> statements = [ methodCallStatement ]
90-
classNode.addStaticInitializerStatements(statements, false)
90+
List<Statement> statements = [
91+
stmt( callX(classX(System), "setProperty", args( propX( classX(BuildSettings), "MAIN_CLASS_NAME"), constX(classNode.name) )) ),
92+
methodCallStatement
93+
]
94+
classNode.addStaticInitializerStatements(statements, true)
9195

9296
def packageNamesMethod = classNode.getMethod('packageNames', GrailsASTUtils.ZERO_PARAMETERS)
9397

0 commit comments

Comments
 (0)