오늘 SpringBoot 에서 Spring Cloud GateWay 를 적용 시키며
겪은 에러를 처리하는 과정을 담았다.
java.lang.IllegalAccessError-->class org.springframework.cloud.gateway.server.mvc.config.
Caused by: org.springframework.cglib.core.CodeGenerationException:
java.lang.IllegalAccessError-->class
org.springframework.cloud.gateway.server.mvc.config.
GatewayMvcPropertiesBeanDefinitionRegistrar$RouterFunctionHolder
$$SpringCGLIB$$0cannot access its superclass org.springframework.cloud.gateway
.server.mvc.config.GatewayMvcPropertiesBeanDefinitionRegistrar$
RouterFunctionHolder (org.springframework.cloud.gateway.server.mvc.config.
GatewayMvcPropertiesBeanDefinitionRegistrar$RouterFunctionHol
der$$SpringCGLIB$$0 is in unnamed module of loader org.springframework.boot.devtools.restart.classloader.Restart
ClassLoader @26fb3fcf; org.springframework.cloud.gateway.server.mvc.config.GatewayMv
cPropertiesBeanDefinitionRegistrar$RouterFunctionHolder is in
unnamed module of loader 'app')
gate way 설정이 때문에 발생하여 application.yml 설정 문제로 생각 되어 yml 파일을 수정
server:
port:8000
eureka:
client:
register-with-eureka: false
fetch-registry: false
service-url:
defaultZone: http://localhost:8761/eureka
spring:
applilcation:
name: api-gateway
cloud:
- id: first-service
uri: http://localhost:8001/
predicates:
- Path=/first-service/**
# - id: second-service
# uri: http://localhost:8002/
# predicates:
# - Path=/second-service/**
server:
port: 8000
# eureka:
# client:
# register-with-eureka: false
# fetch-registry: false
# service-url:
# defaultZone: http://localhost:8761/eureka
# spring:
# applilcation:
# name: api-gateway
# cloud:
# gateway:
# routes:
# - id: first-service
# uri: http://localhost:8001/
# predicates:
# - Path=/first-service/**
# - id: second-service
# uri: http://localhost:8002/
# predicates:
# - Path=/second-service/**
port: 다음에 바로 붙어서 작성이 되어 있었고, gateway 가 빠져 있었다. 그럼에도 동일한 에러가 발생하여 yml 에서 port 를 설정을 제외한 나머지를 주석 처리 하였다. 하지만 그럼에도 에러가 발생하였다.
원인은 정말 어이가 없었다. Gateway dependency 가 추가 되지 않았던 것이다.
ext {
set('springCloudVersion', "2023.0.0")
}
dependencies {
implementation 'org.springframework.cloud:spring-cloud-starter-gateway-mvc'
implementation 'org.springframework.cloud:spring-cloud-starter-netflix-eureka-client'
compileOnly 'org.projectlombok:lombok'
developmentOnly 'org.springframework.boot:spring-boot-devtools'
annotationProcessor 'org.projectlombok:lombok'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
}
dependencyManagement {
imports {
mavenBom "org.springframework.cloud:spring-cloud-dependencies:${springCloudVersion}"
}
}
ext {
set('springCloudVersion', "2023.0.0")
}
dependencies {
implementation 'org.springframework.cloud:spring-cloud-starter-gateway'
implementation 'org.springframework.cloud:spring-cloud-starter-netflix-eureka-client'
compileOnly 'org.projectlombok:lombok'
annotationProcessor 'org.projectlombok:lombok'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
}
dependencyManagement {
imports {
mavenBom "org.springframework.cloud:spring-cloud-dependencies:${springCloudVersion}"
}
}
어이 없게도
gateway
대신gateway-mvc
가 추가되어서 발생한 예외 였다.
허허... 저도 이 문제로 2일을 시간을 보냈는데 덕분에 해결했습니다. 감사합니다.