클라스가 있는데 왜 클라스노트 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 실행 문제 없음
네가 유사한 문제에 부딪히면 이 해결 방법을 생각해 낼 수 있기를 바란다
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Android Studio를 사용하여 실행 가능한 jar 만들기Android Studio를 사용하여 실행 가능한 항아리를 만드는 방법을 설명합니다. OS 버전은 다음과 같습니다. Android Studio 버전은 다음과 같습니다. 자바 버전은 다음과 같습니다. 다음 절차에 따라...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.