강의

멘토링

커뮤니티

Inflearn コミュニティ Q&A

realunan836031 のプロフィール画像
realunan836031

投稿した質問数

Spring Cloudで開発するマイクロサービスアプリケーション(MSA)

User Service - プロジェクト生成

mvn spring-boot:run 실행불가 (꼭 해결해주세요)

作成

·

1.3K

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

 

본 문제 때문에 강의 진행이 안되고 있습니다.

꼭 해결해 주셨으면 합니다.

 

 

 

spring-bootjpa아키텍처spring-cloudkafkamsarabbitmq

回答 3

0

윈도우 기본 터미널이나 IntelliJ 내장 터미널(PowerShell)에서는 따옴표 전체를 백틱(`)이나 큰따옴표로 감싸야 할 때가 있습니다. 아래 명령어 참고하세요

mvn spring-boot:run "-Dspring-boot.run.jvmArguments=-Dserver.port=포트번호"

Dowon Lee님의 프로필 이미지
Dowon Lee
インストラクター

안녕하세요, 이도원입니다.

정보 감사드립니다!

새해 복 많이 받으세요!

0

Dowon Lee님의 프로필 이미지
Dowon Lee
インストラクター

안녕하세요, 이도원입니다.

작업하신 내용의 오류는 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을 사용하고 있는데, 이것을 다른 것으로 변경해서 사용하실 수 있습니다.

image

감사합니다.

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 명령어 수행이 안되는 것이 아니라, UserServiceApplication 이 기동되지 않는 것이 문제입니다.

 

만약 메이븐이 정상적으로 다운로드가 되지 않았거나 환경변수에 설정되지 않았으면 다음과 같은 명령어가 정상적으로 수행되지 않을 것입니다.

 

image

 

자문자답인데요 인텔리제이에 있는 터미널에선 mvn 파라미터를 정확하게 인식하지 못하는 거 같습니다.

image

윈도우 기본 터미널에서 다음의 명령어로 실행하면 정상적으로 작동합니다.

mvn spring-boot:run -Dspring-boot.run.jvmArguments='-Dserver.port=9003'

image

 

realunan836031 のプロフィール画像
realunan836031

投稿した質問数

質問する