작성
·
813
0
찾아보니 비슷한 질문이 있었던 거 같은데 현재 실습환경과 100% 일치하지 않아 도움을 구합니다.
실행환경은 다음과 같습니다
인텔리제이 : Build #IU-241.14494.240, built on March 28, 2024
JDK : 17
스프링부트 : 3.2.4
아시다 시피 최신 인텔리제이에서는 실습환경으로 제시되는 2.X 버전의 스프링부트 지원이 되지 않습니다.
POM.XML로 강제로 버전을 내리거나 JDK 버전을 내리는 경우 서비스 기동이 제대로 되지 않습니다. 아마 스프링부트 3 버전에서는 JDK 특정 버전 이상을 강제하는 느낌입니다.
현재 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>3.2.4</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.example</groupId>
<artifactId>user-serivce</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>user-serivce</name>
<description>user-serivce</description>
<properties>
<java.version>17</java.version>
<spring-cloud.version>2023.0.1</spring-cloud.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring-cloud.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<excludes>
<exclude>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</exclude>
</excludes>
</configuration>
</plugin>
</plugins>
</build>
</project>
명렁어 실행 시 에러는 다음과 같이 발생합니다.
[ERROR] Unknown lifecycle phase ".run.jvmArguments=-Dserver.port=9003". You must specify a valid lifecycle phase or a goal in the format <plugin-prefix>:<goal> or <plugin-group-id>:<plugin-artifact-id>[:<plugin-vers
ion>]:<goal>. Available lifecycle phases are: pre-clean, clean, post-clean, validate, initialize, generate-sources, process-sources, generate-resources, process-resources, compile, process-classes, generate-test-sou
rces, process-test-sources, generate-test-resources, process-test-resources, test-compile, process-test-classes, test, prepare-package, package, pre-integration-test, integration-test, post-integration-test, verify, install, deploy, pre-site, site, post-site, site-deploy. -> [Help 1]
동일한 명렁어를 윈도우즈 cmd에서 실행하면 다음과 같습니다.
[WARNING] Error injecting: org.springframework.boot.maven.RunMojo
java.lang.TypeNotPresentException: Type org.springframework.boot.maven.RunMojo not present
at org.eclipse.sisu.space.URLClassSpace.loadClass (URLClassSpace.java:147)
(중략)
Caused by: java.lang.UnsupportedClassVersionError: org/springframework/boot/maven/RunMojo has been compiled by a more recent version of the Java Runtime (class file version 61.0), this version of the Java Runtime only recognizes class file versions up to 55.0
본 문제 때문에 강의 진행이 안되고 있습니다.
꼭 해결해 주셨으면 합니다.
답변 2
0
안녕하세요, 이도원입니다.
작업하신 내용의 오류는 Powershell 가 관련이 있는 것 같습니다. Powershell에서는 '-' 이 포함된 옵션을 명령어의 일부로 인식해 버려서 우리가 의도했던 옵션 등의 의미로 사용되지 못하는 경우가 있습니다. 해당 명령어를 Powershell이 아닌 cmd에서 실행하시거나 명령어의 -D 부분부터의 옵션을 " ~ " 로 감싸시거나 ` ~ ` 으로 감싸신 후에 실행해 보시면 정상적으로 실행되실 것 같습니다.
PS C:\work\toy-msa\user-service> mvn spring-boot:run "-Dspring-boot.run.jvmArguments='-Dserver.port=9003'"
PS C:\work\toy-msa\user-service> mvn spring-boot:run `-Dspring-boot.run.jvmArguments='-Dserver.port=9003'`
참고로, Windows Intellij 에서는 Terminal 에서 실행되는 프로그램을 기본적으로 Powershell을 사용하고 있는데, 이것을 다른 것으로 변경해서 사용하실 수 있습니다.
감사합니다.
0
터미널이나 cmd 창에서 mvn 명령을 사용하시려면 maven 을 본인 os 맞게 별도 설치하셔야 합니다.
# MAVEN 다운로드
https://maven.apache.org/download.cgi
# 이후에는 path 환경변수에 등록 해 주셔야 합니다.
Ubuntu와 CentOS에서는 환경설정을 모든 OS user가 사용할 수 있도록 /etc/profile에 해 주십시오.
$ vi /etc/profile
export MAVEN_HOME=/usr/local/maven
PATH=$PATH:$HOME/bin:$MAVEN_HOME/bin
export PATH
$ source /etc/profile
자문자답인데요 인텔리제이에 있는 터미널에선 mvn 파라미터를 정확하게 인식하지 못하는 거 같습니다.
윈도우 기본 터미널에서 다음의 명령어로 실행하면 정상적으로 작동합니다.
mvn spring-boot:run -Dspring-boot.run.jvmArguments='-Dserver.port=9003'
mvn 명령어 수행이 안되는 것이 아니라, UserServiceApplication 이 기동되지 않는 것이 문제입니다.
만약 메이븐이 정상적으로 다운로드가 되지 않았거나 환경변수에 설정되지 않았으면 다음과 같은 명령어가 정상적으로 수행되지 않을 것입니다.