부트내용 : Runnable JAR시 Launch configuration에 프로젝트가 보이지않을 경우
문제원인 : 프로젝트를 한번도 RUN하지 않았을 경우에 발생한다.
처리방법 : 
1. 해당 프로젝트의 Main을 Run 해준다.
2. Export Runnable JAR한다.
3. Launch configuration에서 확인 후 JAR 파일로 생성한다.

아래 프로젝트를 JAR 파일로 생성하고자한다.

EXPORT하여 선택한다.

그런데 Launch configuration에서는 해당 프로젝트가 보이지않는 것을 확인할 수 있다.

이유는 아직 해당 프로젝트의 Main을 Run한적이 없기 때문에 생성되지않은 것으로 확인된다.

다음과 같이 Main을 RUN한 후

다시 프로젝트 Export를하면

다음과 같이 해당 프로젝트가 정상적으로 Launch configuration에 표시되는 것을 확인할 수 있다.

오류내용 : Controller로 페이지 이동시 404 오류 발생
오류원인 : 
1. Controller가 잘못 설정되어 있을 경우
2. application.properties에 내용이 잘못되어 있을 경우
3. jsp 파일의 경로가 잘못되어 있거나 없을 경우
4. build.gradle에서 dependency가 정상 주입이 안되어 있었을 경우
5. maven의 경우 pom.xml에서 tomcat-embed-jasper가 추가 안되어 있을 경우

오류해결 : 
1. Controller 설정 확인
2. application.properties의 내용 확인
3. jsp 파일의 경로 확인
4. build.gradle에서 dependency가 정상적으로 추가되었는지 확인
5. pom.xml에서 tomcat-embed-jasper 추가(필자의 경우 여기서 해결됨)

아래 사진과 같이 정상적으로 등록되어 있어야 Controller로 페이지 이동시 404 오류 없이 이동할 수 있다.

<MyController.class>

package com.study.springboot;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;

@Controller
public class MyController {

    @RequestMapping("/")
    public @ResponseBody String root() throws Exception{
        return "JSP in Gradle";
    }
 
    @RequestMapping("/test1")
    public String test1() {
        return "test1";
    }
     
    @RequestMapping("/test2")    // localhost:8081/test2
    public String test2() {
        return "sub/test2";      // ?뜝?럥堉꾢뜝?럩?젷 ?뜝?럩源덌옙鍮듿뜝占? ?뜝?럥彛? /WEB-INF/views/sub/test2.jsp       
    }

}

<application.properties>

server.port=8191
spring.mvc.view.prefix=/WEB-INF/views/
spring.mvc.view.suffix=.jsp

<build.gradle>

plugins {
	id 'org.springframework.boot' version '2.2.5.RELEASE'
	id 'io.spring.dependency-management' version '1.0.9.RELEASE'
	id 'java'
	id 'war'
}

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

repositories {
	mavenCentral()
}

dependencies {
	implementation 'org.springframework.boot:spring-boot-starter-web'
	implementation 'javax.servlet:jstl'
	implementation 'org.apache.tomcat.embed:tomcat-embed-jasper'
	providedRuntime 'org.springframework.boot:spring-boot-starter-tomcat'
	testImplementation('org.springframework.boot:spring-boot-starter-test') {
		exclude group: 'org.junit.vintage', module: 'junit-vintage-engine'
	}

}

test {
	useJUnitPlatform()
}

<pom.xml>

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>2.2.5.RELEASE</version>
		<relativePath /> <!-- lookup parent from repository -->
	</parent>
	<groupId>com.boot</groupId>
	<artifactId>SpringBootDashBoard02-1</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<name>SpringBootDashBoard02-1</name>
	<description>Demo project for Spring Boot</description>

	<properties>
		<java.version>1.8</java.version>
	</properties>

	<dependencies>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>

		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-test</artifactId>
			<scope>test</scope>
			<exclusions>
				<exclusion>
					<groupId>org.junit.vintage</groupId>
					<artifactId>junit-vintage-engine</artifactId>
				</exclusion>
			</exclusions>
		</dependency>

		<!-- https://mvnrepository.com/artifact/org.apache.tomcat.embed/tomcat-embed-jasper -->
		<dependency>
			<groupId>org.apache.tomcat.embed</groupId>
			<artifactId>tomcat-embed-jasper</artifactId>
		</dependency>

	</dependencies>

	<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
			</plugin>
		</plugins>
	</build>

</project>

오류내용 : Web server failed to start. Port 8291 was already in use.
오류원인 : 해당 포트번호를 이미 사용하고 있을 경우 발생함
오류해결 : 
1. cmd에서 netstat -ano | findstr 8291 입력
2. taskkill /F /PID 7292(PID값) 입력하여 해당 PID를 죽이면됨
3. 다시 netstat -ano | findstr 8291 조회하여 정상적으로 죽었는지 확인

다음과 같이 8291 포트의 PID 값을 확인한 후 taskkill로 죽인 것을 확인할 수 있다.

오류내용 : cvc-complex-type.4: Attribute 'version' must appear on element 'web-app'.
오류원인 : web-app 요소에 반드시 버전을 표기해야만 하므로 버전을 표기하지않았을 경우 발생한다.
오류해결 : web-app 요소에 버전 표기 후 해결

다음과 같이 버전 표기가 안되어 있을 경우 오류가 발생한다.

버전 표기 후 문제가 해결된 것을 확인할 수 있다.

오류내용 : At least one base package must be specified
오류원인 : @ComponentScan에 basePackage를 설정하지 않았기 때문에 발생
오류해결 : 
1. basePackage를 설정
2. 해당 ComponentScan 어노테이션을 삭제하여 해결

다음과 같이 basePackage가 설정되어 있지않음

다음과 같이 되어 있어야 함

필자는 2번과 같이 해당 어노테이션을 삭제하여 해결하였다.

+ Recent posts