org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'loadTimeWeaver' ...
Caused by: java.lang.IllegalStateException: ClassLoader [sun.misc.Launcher$AppClassLoader] does NOT provide an 'addTransformer(ClassFileTransformer)' method.
Specify a custom LoadTimeWeaver or start your Java virtual machine with Spring's agent: -javaagent:org.springframework.instrument.jar
Spring 的負載時織入 需要類加載器支持 addTransformer 方法,默認的 AppClassLoader 不支持。常見於啟用了 @EnableLoadTimeWeaving 或使用了 AspectJ 織入但未配置 Java Agent。
啟動參數添加:
-javaagent:/path/to/spring-instrument-{version}.jar
Maven 依賴:
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-instrument</artifactId>
<version>5.3.x</version>
</dependency>
在配置類中註冊 InstrumentationLoadTimeWeaver:
@Configuration
@EnableLoadTimeWeaving
public class AppConfig {
@Bean
public InstrumentationLoadTimeWeaver loadTimeWeaver() throws Throwable {
return new InstrumentationLoadTimeWeaver();
}
}
原理:InstrumentationLoadTimeWeaver 依賴 JVM 的 Instrumentation API,需確保運行環境支持(如 JDK 而非 JRE,且未禁用 Agent 機制)。
若不需要 AOP 織入,可移除 @EnableLoadTimeWeaving 或排除自動配置:
@SpringBootApplication(exclude = LoadTimeWeavingConfiguration.class)
public class Application { ... }
優先嘗試方案二,若仍報錯則使用方案一。生產環境建議方案一以確保穩定性。