본문 바로가기

컴퓨터공학/Spring & Hibernate

Spring> Spring Boot> Command line

Spring boot는 self contained 이다. 

JAR files 는 application code와 Tomcat server를 포함하고 있다. 

그래서 따로 설치할 것이 없이 커맨드라인으로 프로젝트를 실행할 수 있다. 

 

 

opt1. java -jar 사용한다.

cmd에서

java -jar [JAR 파일 이름].jar 

 

opt2. Spring boot maven plugin 사용한다.  

mvnw spring-boot:run

프로젝트에 mvnw와 mvnw.cmd가 있다.

mvnw는 maven 프로젝트를 실행하게 해준다.

maven을 설치할 필요도 없고 경로를 줄 필요도 없다. 

maven 버전이 안 맞으면 자동을 맞는 버전을 다운받고 실행한다. 

mvnw.cmd는 윈도우에서 사용하고

mvnw.sh는 리눅스와 맥에서 사용한다. 

 

만약 이전에 메이븐을 설치한 상태라면 mvnw를 삭제해도 된다.  

mvn clean compile test

 

 

 

 

spring initializer에 의해 저절로 생성된다. 

 

 

단계

1. IDE 종료

2. mvnw package 로 app을 package

3. java -jar로 app을  실행

4. spring boot maven plugin 을 사용하여 app 실행 mvnw spring-boot:run

 

1번과 2번은 공통 단계이고 3번 아니면 4번으로 실행한다. 

 

 

1.

pom.xml에서 security와 actuator를 dependency에서 지운다. 지금은 필요하지 않다.   

환경변수에 JAVA_HOME이 있는지 확인한다. 그래야 mvnw를 사용할 수 있다.

JAVA 버전은 11이 아니라 1.8로 고친다. 

 

2.

cmd로 프로젝트 경로로 이동한 다음

mvnw package 라고 입력한다.

 

IllegalArgument Unresolvable class definition for  라고 오류가 나오거나

Please refer to dump files 있을 땐 

pom.xml 에 

을 추가한다.  

 

성공했다...

이것은 target 하위 폴더에 생성된다. 

이걸 실행해야 한다. 

 

3. 

 

 

 

java -jar springboot-0.0.1-SNAPSHOT.jar

 

로 입력하여 실행하면 끝이다.

그리고 브라우저에서 localhost:8080/ 으로 접근하면 된다. 

그러나 나는 

Exception in thread "main" java.lang.UnsupportedClassVersionError: com/seol/springboot/SpringbootApplication has been compiled by a more recent version of the Java Runtime (class file version 55.0), this version of the Java Runtime only recognizes class file versions up to 52.0

 

에러가 나왔는데 이유는 컴파일된 앱이(11 버전)  실행하려는 환경의 jdk보다(8) 높기 때문이다.

해결방법은 컴파일된 앱 버전을 낮추면 된다...

 

 

 

4.  스프링 부트 메이븐 플러그인으로 실행하는 방법 

 

cd로 프로젝트 경로로 이동한 다음 mvnw spring-boot:run

입력해서 실행한다.