[JSP] no main manifest attribute 에러 해결

no main manifest attribute

간단한 maven 프로젝트를 만들고 build 후 target 폴더에 생성된 jar 파일을 실행해봤다. 그랬더니 no main manifest attribute 에러가 생성됐다.

jar -xvf JAR File Name 을 통해 생성된 파일을 풀고, cat META-INF/MENIFEST.MF 파일 내용을 살펴봤다. 아래와 같이 아무 내용이 없었다.

Manifest-Version: 1.0
Created-By: Apache Maven 3.8.4
Built-By: My Account Name
Build-Jdk: 12.0.2

해당 에러는 main 함수를 찾을 수 없을 때 나타난다고 한다. 여러 방법을 시도하다가 아래 플러그인 활용법으로 에러를 해결했다.

$1.$ 프로젝트 root pom.xml 열기

$2.$ 아래처럼 <plugin> 이라 적힌 부분 찾기

<!-- ... -->
<!-- ... -->
<!-- ... -->

        <plugin>
          <artifactId>maven-jar-plugin</artifactId>
          <version>3.0.2</version>
          <!-- HERE -->
        </plugin>

<!-- ... -->
<!-- ... -->
<!-- ... -->

$3.$ HERE 에 아래 플러그인을 삽입. 이 때, <mainClass> 임을 주의.

<!-- manifest plugin -->
          <configuration>
                    <archive>
                        <manifest>
                            <mainClass>Your.Package.And.Class.Name</mainClass>
                        </manifest>
                    </archive>
          </configuration>
<!-- manifest plugin -->

완성된 pom.xml 파일은 다음과 같은 형태다. 메인 클래스 태그 내부에는 패키지 이름과 클래스 이름을 적는데, main 함수 가 있는 패키지까지의 경로와 클래스 이름을 적으면 된다. maven 에서 제공하는 프로젝트 archetype 을 기반으로 아무 설정 없이 프로젝트를 만들었다면 com.example.App 이 된다.

<!-- ... -->
<!-- ... -->
<!-- ... -->

        <plugin>
          <artifactId>maven-jar-plugin</artifactId>
          <version>3.0.2</version>
          <configuration>
                    <archive>
                        <manifest>
                            <mainClass>Your.Package.And.Class.Name</mainClass>
                        </manifest>
                    </archive>
          </configuration>
        </plugin>

<!-- ... -->
<!-- ... -->
<!-- ... -->

Plug-in 이란?

플러그인(plugin) 또는 추가 기능(애드인;add-in, 애드온;add-on)은 호스트 응용 프로그램과 서로 응답하는 컴퓨터 프로그램이며, 특정한 “주문식” 기능을 제공한다.
출처: 위키백과

보통의 응용프로그램에 없는 기능을 사용할 수 있도록 돕는 것. 웹 브라우저에서 음악을 듣거나 PDF를 열어보는 행위가 가능하게 하는 것이 Plug-in 이다.

Updated:

Leave a comment