어쩌면 내가 제대로 이해하지 못 하겠지만, 당신이 원하는 것은 classpath에있는 다른 JAR 파일 (또한)로 프로그램을 실행하는 것입니다.
그렇다면 A.jar에 코어가 있고 B.jar에 라이브러리가 있다고 가정 해 보겠습니다. 이 같은 프로그램을 실행할 수 있습니다 (대체 :와, Windows에서) : 명령 줄 인수에 모두가 어디로 가는지
java -cp A.jar:B.jar main.class.Name args
main.class.Name
는 메인 클래스 이름입니다
및
args
입니다.
당신은이처럼 manifest.mf
에 Main-Class
및 Class-Path
속성을 넣을 수 있습니다 :
Class-Path: B.jar
Main-Class: main.class.Name
그런 다음이 같은 프로그램을 실행할 수 있습니다
java -jar A.jar args
당신에게 진실을 말하자면, 내가 사용 내 응용 프로그램을 단일 JAR 파일로 배포하고 모든 종속성을 추출하여 하나의 거대한 JAR 파일로 래핑하는 것은 매끄러운 일이라고 생각하는 것입니다. 문제는 일부 응용 프로그램이 상당수의 종속성을 갖게되고 코드를 변경할 때마다 종속성에 변경된 사항이 없더라도 모든 종속 코드를 배포해야한다는 의미이기도합니다. 이것은 사소한 변화가있을지라도 거대한 JAR 파일을 배포하는 것을 의미했습니다.
manifest 속성을 사용하면 단일 JAR 파일 (일부 시스템에서는 두 번 클릭하거나 간단한 "java -jar
"주문)과 똑같은 방식으로 실행될 수있는 응용 프로그램을 배포 할 수 있지만 톤 이후의 소프트웨어 릴리스에서 모든 중복 라이브러리를 전송하지 않아도 시간과 대역폭을 절약 할 수 있습니다.
종속적 인 JAR을 자신의 디렉토리에 넣을 수도 있습니다 (지금은 lib
이라고 부름). Class-Path
을 수정하여 모든 JAR 경로가 "lib/B.jar
"처럼 보이도록하십시오. 그렇다면 많은 작은 JAR 파일들로 가득 찬 주 프로그램 디렉토리로 끝나지 않을 것입니다.
다른 항아리가 들어있는 항아리를 포장 했는가? 또는 항아리에 종속 항아리를 포함시키고 싶습니까? 문제가 정확히 무엇입니까? – djna
나는 질문을 업데이트했다 : –