나는 그냥 증대합니다 J2ME 란드어 응용 프로그램에 주력하고 있는 it. 나는 좀 더 정확한 버전이 jar 파일의 찾기 어려움을 겪었다. 이 버전의 jar 파일을 찾을 수 있는 방법이 유지됩니까 임포트합니다 진행되고 있는 클래스? 내 말은 할 경우 일부 임포트합니다 스트리오스. 우리가 알고 있는 버전의 jar 스자리 패키지로의 속한?
단지 안의 JAR 파일의 경우 위 질문에 대한 확장하십시오 META-INF/MANIFEST.MF 볼 줄 것으로 보인다. '분명히 버전: 버전 1.0 '이 jar 를 수 없습니다!
You need to look for) '는 무료 텍스트 문자열을 구축상의 버전' 이 있는 경우, 그래서 완전히 최대 jar& # 39 의 저자, ll you& 결정해야 # 39 에서 찾을 수 없다. 참조 Oracle docs 및 [패키지 버전 스피치피카리온] [2]
[2]: http://docs.oracle.com/javase/8/docs/technotes/guides/versioning/spec/versioning2.html # wp89936
각 jar 버전 고유해야 검사값이. Jar 당신꺼에요 검사값이 계산할 수 있습니다 (버전 정보를 갖고 있는 없음) 와 비교하여 다른 버전의 jar. 우리는 jar 검사값이 사용하여 검색할 수도 있습니다.
이 질문에 계산하십시오 검사값이) 는 다음과 같은 뜻이 있다. https://stackoverflow.com/questions/478722/what-is-the-best-way-to-calculate-a-checksum-for-a-file-that-is-on-my-machine > <;
기본적으로 '클래스' 를 사용할 수 있도록 하는 콩지름에 자바드란고드프라카제 클라슬로이더 클래스뿐만 대한 정보.
예:
String.class.getPackage().getImplementationVersion();
Package.getPackage(this).getImplementationVersion();
Package.getPackage("java.lang.String").getImplementationVersion();
내가 생각하는 것으로 알려져 이 기능을 사용하여 추적하는 로그바크 JAR 이름 / 버전) 이 제작한 각 클래스의 stacktrace 가.
이 경우 모든 jar 버전니다 등 간단한 프로그램은 목록
Map<, 문자열, String>. 자스와이스버시온포런드 = new LinkedHashMap<, 문자열, String> ();; List< String>; 야세비트노마니페스트 = new LinkedList< String> ();;; List< String>; 야세비트노베르시온포런드 = new LinkedList< String> ();;;
lib 폴더에 파일을 통해 //loop jar () 및 제페르시온 //pick 하나씩 나중에 오마이베 //print 콘솔리자베 에서 파일 (?)
= new [] 파일을 파일 트리스트피레스 (), 파일 (" path_to_jar_folder";)
대한 (파일 파일: 파일) { 구체화하십시오 파일_이름 = file.제나미 ();
시도하시겠습니까 { Jar (파일) = new 자베르시온 문자열이어야 그제버시온 ();
if (null 자베르시온 =) 야세비트노베르시온포운드라드 (파일_이름); 다른 자스와이스버시온포운스푸스 (파일_이름, 자베르시온);
} 캐치 (idfsysobject. ex) { 야세비트노마니페스트리아다 (파일_이름); } }
시스템지우트리프린틀린 (" 버전으로, jar http://support. "). 대한 (Entry<, 문자열, String>. 자나미: 자스와이스버시온포런드그렌트리스트 ()) 시스템지우트리프린틀린 (자나미스게스키 () + ". . ". + 자나미드제바루이 ());
시스템지우트리프린틀린 (" 찾을 수 없는 점, \n \n 버전 "). 대한 (구체화하십시오 자나미: 야세비트노베르시온포런드) 시스템지우트리프린틀린 (자나미);
시스템지우트리프린틀린 (" \n \n 미루어, 이때 없이 http://support. "). 대한 (구체화하십시오 자나미: 야세비트노마니페스트) 시스템지우트리프린틀린 (자나미);
It 는 자바스트 핵심 jar) 에서 다운로드 받을 수 있는 http://www.javaxt.com/downloads/
이러한 필요한 클래스를 사용하여
import java.util.jar.Attributes;
import java.util.jar.Manifest;
이러한 방법은 jar 속성뿐 액세스하려면 드리겠습니다. 내가 좋아하는 하위 호환 및 사용 중인 최신. 그래서 이를 활용한
public Attributes detectClassBuildInfoAttributes(Class sourceClass) throws MalformedURLException, IOException {
String className = sourceClass.getSimpleName() + ".class";
String classPath = sourceClass.getResource(className).toString();
if (!classPath.startsWith("jar")) {
// Class not from JAR
return null;
}
String manifestPath = classPath.substring(0, classPath.lastIndexOf("!") + 1) +
"/META-INF/MANIFEST.MF";
Manifest manifest = new Manifest(new URL(manifestPath).openStream());
return manifest.getEntries().get("Build-Info");
}
public String retrieveClassInfoAttribute(Class sourceClass, String attributeName) throws MalformedURLException, IOException {
Attributes version_attr = detectClassBuildInfoAttributes(sourceClass);
String attribute = version_attr.getValue(attributeName);
return attribute;
}
이 작품을 할 때 잘 알려진 클래스에 대한 자세한 내용은 치어 메이븐 사용하고 있습니다. ᄋ "이번 도움이 됩니다.
Java - jar 자나미 '명령' 이 함께 확인할 수 있습니다