클라스가 있는데 왜 클라스노트 Found Exception을 보고해요?

1905 단어 jar
묘사
       ,              。                ,    jar         ,  pom       ,   java -jar       jar  ,           
Exception in thread "main" java.lang.NoClassDefFoundError
...
Caused by: java.lang.ClassNotFoundException: ...

분석하다.
lib 패키지 아래에 이 인터페이스에 종속된jar 패키지가 있습니다
여기까지 읽고 먼저 아래를 보지 마라. 왜 신문에서 종류를 찾지 못할까?
포장할 때 마니페스트가 동시에 생성됩니다.MF 파일,jar 패키지의 기본 정보 설명
Main-Class에서 프로그램의 입구를 지정합니다.java-jar*.jar에서 시작
Class-Path는jar 패키지 의존 관계를 지정합니다. 클래스 마운트는 이 경로에 따라class를 불러옵니다
네, 마니페스트에 대해 알아봤습니다.MF 파일, 그럼 이 파일을 봅시다. 아마도 어떤 독자들은 이 파일을 어떻게 찾는지 모를 것입니다. 프로그램의 jar를 풀면 됩니다, unzip*.jar이면 볼 수 있어요.
Class-Path에서 잘못 보고된 클래스가 빨간색 테두리로 둘러싸인jar 패키지에서 보입니다. 이jar 패키지의 이름은 우리lib 패키지에 대응하는jar 이름과 같지 않습니다.
lib 패키지는 dspadinfo입니다.client-0.0.41-SNAPSHOT.jar
마니페스트에서.MF 파일의 dspadinfo입니다.client-0.0.41-20190902.070402-1.jar, 시간 스탬프가 있는 형식으로 Snapshot Version 같은 스냅샷 버전의 jar를 포장할 때 유일한 버전을 사용했습니다. 이것은 기본값입니다. 이름이 맞지 않아서 대응하는 클래스를 불러올 수 없습니다. 위의 오류를 보고했습니다.
해결하다
maven 공식 문서에 스냅샷 버전을 처리하는 소개, 연결http://maven.apache.org/share...
'-SNAPSHOT'버전 이름을 강제로 사용하려면 비활성화만 하면 됩니다.
false

제 프로젝트의 설정을 참고로 드리겠습니다.

        org.apache.maven.plugins
        maven-jar-plugin
        
          
            
              true
              lib/
              *.dsp.redispositive.Application
              false
            
          
        

pom 파일을 수정한 후 다시 포장하여 배치한 후,MANIFEST.MF 파일의 Class-Path의jar 패키지는 dspadinfo입니다.client-0.0.41-SNAPSHOT.jar 실행 문제 없음
네가 유사한 문제에 부딪히면 이 해결 방법을 생각해 낼 수 있기를 바란다

좋은 웹페이지 즐겨찾기