.jar 파일의 내용을 다른 디렉토리로 추출한 다음 해당 디렉토리에 파일을 추가하고 디렉토리를 다시 압축 할 수 있는지 궁금합니다. jar 파일을 추가합니다. 내가 찾은 jar 파일을 추출하는 방법은 NSTask
을 사용하여 jar xf (location of jar file)
이라는 터미널 명령을 실행하는 것입니다. 이것은 효과가 있었지만 프로그램의 UI를 영구적으로 중단 시켰습니다 (충돌하지 않고). 응용 프로그램이 저장된 디렉토리로 내용을 보관 취소했습니다. 이 작업을 수행하는 또 다른 방법이 있습니까, 아니면 NSTask
을 잘못 사용하고 있습니까?Objective-C에서 .jar 파일의 압축 해제
//Unarchive the jar
[self runCommandWithBase:@"/usr/bin/jar" arguments:[NSArray arrayWithObjects:@"xf", jarLocation, nil]];
및
- (NSString *)runCommandWithBase:(NSString *)base arguments:(NSArray *)arguments {
//Create the task
NSTask *task = [[NSTask alloc] init];
//Setup the task
[task setLaunchPath:base];
[task setArguments:arguments];
[task setStandardInput:[NSPipe pipe]];
[task setStandardOutput:[NSPipe pipe]];
//Set file handle
NSFileHandle *file = [[NSPipe pipe] fileHandleForReading];
//Run the command
[task launch];
//Return
NSData *returnData = [file readDataToEndOfFile];
return [[NSString alloc] initWithData:returnData encoding:NSUTF8StringEncoding];}
아마, 파일을 보관 해제 다른 파일을 추가 한 다음 재 것이다 엑스 코드에서 자바 응용 프로그램을 포함 할 수있는 방법이 있나요 : 여기에 내가 사용하고있는 코드는 그것을 압축? 그런 다음 NSTask
으로 java 응용 프로그램을 실행 하시겠습니까? 사전에
감사합니다,
벤
* ".jar ..의 내용을 추출한 다음 .jar 파일에 일부 파일을 다시 추가 할 수 있습니다."*이 모든 것을 통해 실제로 달성하려는 내용은 무엇입니까? 가장 좋은 해결책은 여분의 리소스를 Jar로 처리 한 다음 앱의 런타임 클래스 경로에 추가하는 것입니다. 이것은 Jar를 원래의 Jar 파일로 변경할 필요는 없지만 Manifest를 업데이트하여 클래스 경로에 추가 Jar 파일을 추가해야 할 수도 있습니다. –
jar 파일 형식은 zip 파일 형식입니다. obj-c에 zip 라이브러리가 있으면 jar 파일을 열고 압축하는 데 사용할 수 있습니다. 매니페스트가 먼저 필요하지만 실제로는 결코 문제가되지 않았으므로 (가능한) 합병증이 있습니다. 항아리를 수정해야 할 때 일반적으로 zip 파일 편집기를 사용합니다. – Erik