본문 바로가기
Java/Spring with Error

[해결 방법] Could not find javax.servlet:jstl

by HJ0216 2023. 10. 3.

👉 기본 환경

- Language: Java

- DB: MySQL

- IDE: IntelliJ

 

 

⌨️ 코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
plugins {
    id 'java'
    id 'org.springframework.boot' version '3.1.4'
    id 'io.spring.dependency-management' version '1.1.3'
}
 
group = 'com.project'
version = '0.0.1-SNAPSHOT'
 
java {
    sourceCompatibility = '17'
}
 
configurations {
    compileOnly {
        extendsFrom annotationProcessor
    }
}
 
repositories {
    mavenCentral()
}
 
dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-actuator'
    implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
    implementation 'org.springframework.boot:spring-boot-starter-web'
 
    // .jsp
    implementation 'javax.servlet:jstl'
    implementation "org.apache.tomcat.embed:tomcat-embed-jasper"
 
    compileOnly 'org.projectlombok:lombok'
    developmentOnly 'org.springframework.boot:spring-boot-devtools'
    runtimeOnly 'com.mysql:mysql-connector-j'
    annotationProcessor 'org.projectlombok:lombok'
    testImplementation 'org.springframework.boot:spring-boot-starter-test'
}
 
tasks.named('test') {
    useJUnitPlatform()
}
 
 

 

 

🖨️오류

1
2
3
4
5
6
7
8
9
Execution failed for task ':compileJava'.
> Could not resolve all files for configuration ':compileClasspath'.
   > Could not find javax.servlet:jstl:.
     Required by:
         project :
 
Possible solution:
 - Declare repository providing the artifact, see the documentation at https://docs.gradle.org/current/userguide/declaring_repositories.html
 
 

build.gradle에서 jsp 사용을 위한 jstl이 적용되지 않음

 

 

📡 원인

Springboot 3.대부터는 jstl implementation 방법이 변경됨

 

 

📰 해결 방법

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
plugins {
    id 'java'
    id 'org.springframework.boot' version '3.1.4'
    id 'io.spring.dependency-management' version '1.1.3'
}
 
group = 'com.project'
version = '0.0.1-SNAPSHOT'
 
java {
    sourceCompatibility = '17'
}
 
configurations {
    compileOnly {
        extendsFrom annotationProcessor
    }
}
 
repositories {
    mavenCentral()
}
 
dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-actuator'
    implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
    implementation 'org.springframework.boot:spring-boot-starter-web'
 
    // .jsp
    // implementation 'javax.servlet:jstl' //스프링부트 3.0 미만
    implementation 'jakarta.servlet:jakarta.servlet-api' //스프링부트 3.0 이상
    implementation 'jakarta.servlet.jsp.jstl:jakarta.servlet.jsp.jstl-api' //스프링부트 3.0 이상
    implementation 'org.glassfish.web:jakarta.servlet.jsp.jstl' //스프링부트 3.0 이상
    implementation "org.apache.tomcat.embed:tomcat-embed-jasper"
 
    compileOnly 'org.projectlombok:lombok'
    developmentOnly 'org.springframework.boot:spring-boot-devtools'
    runtimeOnly 'com.mysql:mysql-connector-j'
    annotationProcessor 'org.projectlombok:lombok'
    testImplementation 'org.springframework.boot:spring-boot-starter-test'
}
 
tasks.named('test') {
    useJUnitPlatform()
}
 
 

Springboot 3.대에서 사용할 수 있게 jstl implementation 변경

 

 

⭐ GPT도 좋지만, Google 검색을 다양하게 시도해보자 ⭐

 

 

 

📚 참고 자료

 

(spring 3.0 version) jstl 이 재대로 적용되지 않을때 - 인프런 | 고민있어요

혹시나 spring 3.0 버전을 사용하고 계신분이라면implementation 'javax.servlet:jstl'대신에implementation group: 'org.glassfish.web', name: 'jakarta.servlet.jsp.jstl', version...

www.inflearn.com