首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計疑難解答

Spring Boot 啟動報錯:loadTimeWeaver Bean 創建失敗解決方案

     編輯:程式設計疑難解答

錯誤堆棧

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。

解決方案

方案一:配置 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>

方案二:自定義 LoadTimeWeaver Bean(適用開發/測試)

在配置類中註冊 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 { ... }

驗證建議

優先嘗試方案二,若仍報錯則使用方案一。生產環境建議方案一以確保穩定性。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved