programing

java -jar를 실행하는 동안 Main-Class 매니페스트 특성을 로드하지 못했습니다.

powerit 2023. 8. 1. 20:49
반응형

java -jar를 실행하는 동안 Main-Class 매니페스트 특성을 로드하지 못했습니다.

Spring MVC 프로젝트를 성공적으로 구축했습니다.mvn clean package 튜토리얼을 따름.

이제 다음을 사용하여 서비스를 실행하려고 합니다.

mvn clean package && java -jar target/gs-serving-web-content-0.1.0.jar

하지만 다음과 같은 오류가 발생합니다.

target/gs-serving-web-content-0.1.0.jar에서 Main-Class 매니페스트 특성을 로드하지 못했습니다.

내가 뭘 빼놓았나요?

Spring Boot로 작업하는 경우 문제가 해결됩니다.

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <version>1.2.5.RELEASE</version>
            <executions>
                <execution>
                    <goals>
                        <goal>repackage</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>

참조 가이드 | 스프링 부트 메이븐 플러그인

Spring Boot Maven 플러그인이 없을 수 있습니다.

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

pom.xml에 지정해야 합니다. 이렇게 하면 모든 종속성으로 jar를 실행할 수 있습니다(교체).your.main.class):

<!-- setup jar manifest to executable with dependencies -->
<plugin>
  <artifactId>maven-assembly-plugin</artifactId>
  <configuration>
    <descriptorRefs>
      <descriptorRef>jar-with-dependencies</descriptorRef>
    </descriptorRefs>
    <archive>
      <manifest>
        <mainClass>your.main.class</mainClass>
      </manifest>
    </archive>
  </configuration>
  <executions>
    <execution>
      <phase>package</phase>
      <goals>
       <goal>single</goal>
      </goals>  
    </execution>
  </executions>
</plugin>

순서를 보다

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

위에 있어야 합니다.

도커 파일-매븐-재패키지가 발생하지 않을 경우 재패키지가 발생합니다.

이것은 매니페스트에 주요 속성이 없다는 나의 문제를 해결했습니다.

누락되었습니다.maven-jar-plugin추가해야 하는 항목manifest꼬리표를 달다

봄 부츠를 위해 매니페스트를 만들었습니다.META-INF 폴더 내부의 MF 파일입니다.

STSIDE에서 다음과 같이 src/main/resources 폴더 안에 META-INFO 폴더를 배치했습니다.

screenshot from STS IDE (eclipse project)

매니페스트의 내용.MF 파일:

Manifest-Version: 1.0
Implementation-Title: bankim
Implementation-Version: 1.5.6.RELEASE
Archiver-Version: Plexus Archiver
Built-By: Yourname
Implementation-Vendor-Id: com.bankim
Spring-Boot-Version: 1.5.6.RELEASE
Implementation-Vendor: Pivotal Software, Inc.
Main-Class: org.springframework.boot.loader.JarLauncher
Start-Class: com.bankim.BankimApplication
Spring-Boot-Classes: BOOT-INF/classes/
Spring-Boot-Lib: BOOT-INF/lib/
Created-By: Apache Maven 3.3.9
Build-Jdk: 1.8.0_131
Implementation-URL: http://projects.spring.io/spring-boot/bankim/
  1. "Bankim"/"Bankim"에 대한 모든 언급은 내 프로젝트 이름을 참조하므로, 다음과 같이 당신의 프로젝트 이름으로 대체하십시오.
  2. "Start-Class" 값을 특별히 기록합니다.기본 메서드가 있는 클래스에 대한 "경로"를 포함해야 합니다.
  3. 행: Main-Class: org.springframework.boot.loader.Jar Launcher는 그대로 두어야 합니다.

****위 매니페스트는 "Mradul Pandey"(15년 9월 2일 4시 50분에 답변)가 위에서 언급한 "스프링 부츠 메이븐 플러그인"을 사용하여 저를 위해 만들어졌습니다.

이것이 도움이 되길 바랍니다.

java -jar target/gs-serving-web-content-0.1.0.jar명령은 제공된 jar가 실행 가능하다고 가정합니다.실행 가능한 병에서,main방법이 정의되어 있습니다.MANIFEST.MF파일. 당신이 가지고 있지 않은 것을 고려할 때.MANIFEST.MF파일, 추가 명령줄 인수를 전달하여 다음을 포함하는 클래스를 지정할 수 있습니다.main방법.

다음과 같은 명령.java -cp target/gs-serving-web-content-0.1.0.jar com.pkg.subpkg.MainClass목적에 부합할 것입니다.

나는.spring-boot-maven-plugin하지만 여전히 메인 클래스에 대한 오류를 받고 있었습니다.

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

마침내 나는 그것을 사용해야 했습니다.maven-jar-plugin추가합니다.mainClass

    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-jar-plugin</artifactId>
        <version>2.4</version>
        <configuration>
          <archive>
            <manifest>
            <mainClass>com.org.proj.App</mainClass>
            </manifest>
          </archive>
        </configuration>
    </plugin>

그리고 갈 수 있어서 좋았어요!

사용하다spring-boot-maven-plugin

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

그리고 꼭 준비하세요.property start-classpom.xml에

<properties>
      <!-- The main class to start by executing "java -jar" -->
      <start-class>org.example.DemoApplication</start-class>
</properties>

또는 메인 클래스를 pom.xml의 플러그인 섹션에 있는 spring-boot-maven-plugin의 mainClass 요소로 정의할 수 있습니다.

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>             
            <executions>
                 <execution>
                     <goals>
                         <goal>repackage</goal>
                     </goals>
                     <configuration>
                         <classifier>spring-boot</classifier>
                         <mainClass>${start-class}</mainClass>
                     </configuration>
                 </execution>
             </executions>
        </plugin>
    </plugins>
</build> 

플러그인 구성이 내 구성과 같은 경우(below그 사용), 다음, 사용mvn package spring-boot:repackage.

<build>
    <pluginManagement>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <executions>
                    <execution>
                        <goals>
                            <goal>repackage</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </pluginManagement>
</build>

행복한 배움.

메인 클래스를 매니페스트에 설정해야 합니다.MF 파일:

Main-Class: com.example.MainClassApplication

사용할 수 있습니다.

mvn 패키지 spring-boot:재패키지

target dir 앞에 이 명령을 누른 다음 jar 파일을 사용합니다.

.

언급URL : https://stackoverflow.com/questions/19620342/failed-to-load-main-class-manifest-attribute-while-running-java-jar

반응형