본문 바로가기
spring

[springboot] jar파일이 jsp경로를 못찾는 경우, intellij에서 war 빌드

by moonsiri 2020. 10. 11.
728x90
반응형

/src/main/webapp/WEB-INF/* 경로에 jsp 파일이 있을 경우,

application.yml 에 아래처럼 설정을 하고서 개발 툴에서는 잘 작동하던 springboot 프로젝트가 jar로 빌드하면 경로를 못 찾고404 에러가 뜰 때!

// application.yml
spring:
  mvc:
    view:
      prefix: /WEB-INF/view/
      suffix: .jsp

 

 

원인은 jar로 된 빌드 파일은 더 이상 jsp를 지원하지 않는다고 합니다.

그래서 jar가 아닌 war로 빌드를 해야 합니다.

 

JSP Limitations

When running a Spring Boot application that uses an embedded servlet container (and is packaged as an executable archive), there are some limitations in the JSP support.

With Jetty and Tomcat, it should work if you use war packaging. An executable war will work when launched withjava -jar, and will also be deployable to any standard container. JSPs are not supported when using an executable jar.

Undertow does not support JSPs.

Creating a customerror.jsppage does not override the default view forerror handling.Custom error pagesshould be used instead.

There is aJSP sampleso that you can see how to set things up.

[출처] https://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#boot-features-jsp-limitations

 

 

 

다음은 intellij(인텔리제이)에서 war로 빌드하는 방법입니다.

 

build.gradle id 'war' providedRuntime 'org.springframework.boot:spring-boot-starter-tomcat'를 추가합니다.

(war파일을 생성하기 위해 추가하는 것입니다. springboot는 tomcat이 없어도 가상 애플리케이션 서버를 이용하여 구동시킬 수 있습니다. 아래 추가 내용은 gradle을 돌린 후에 Application을 실행하면 외부 tomcat을 이용하는 것으로 설정이 바뀌기 때문에 컴퓨터에 tomcat이 설치돼 있지 않으면 에러가 발생합니다. war파일 생성이 아니라 로컬에서 서버를 구동시키려면 추가했던 부분을 지우거나 tomcat을 설치하면 됩니다.)

[출처] https://cjh5414.github.io/springboot-war-deploy-intellij/

 

 

https://start.spring.io/

plugins {
	id 'org.springframework.boot' version '2.1.9.RELEASE'
	id 'io.spring.dependency-management' version '1.0.8.RELEASE'
	id 'java'
	id 'war' // 추가
}

group = 'com.example'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '1.8'

repositories {
	mavenCentral()
}

dependencies {
	implementation 'org.springframework.boot:spring-boot-starter-web'
	providedRuntime 'org.springframework.boot:spring-boot-starter-tomcat' // 추가
	testImplementation 'org.springframework.boot:spring-boot-starter-test'
}

 

그리고서 인텔리제이 우측에 Gradle 탭을 클릭하 뒤,Run Configurations > spring-webboard를 클릭하면 war로 빌드됩니다.

 

빌드된 war 파일은 jar 파일과 마찬가지로 프로젝트/build/libs/경로에 생성됩니다.

 

728x90
반응형

댓글