.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];}
は多分、ファイルのアーカイブを解除、他のファイルを追加し、再うXcodeでJavaアプリケーションを含める方法があります:ここで私が使用していたコードですそれを圧縮する?その後、NSTask
でjavaアプリケーションを実行しますか?事前に
おかげで、
ベン
* "..jarの内容を抽出して、.jarファイルにいくつかのファイルを追加することができます。" *これで実際に達成しようとしていることは何ですか?最善の解決策は余分なリソースをJarにしてから、アプリケーションの実行時クラスパスに追加することです。元のJarを変更する必要はありませんが、追加のJarをクラスパスに追加するためにマニフェストを更新する必要があります。 –
jarファイル形式はzipファイル形式です。 obj-cにzipライブラリがある場合、これを使用してjarファイルを開いて圧縮することができます。目録が最初にある必要があるかもしれないが、実際にはそれは決して問題ではないので、いくつかの(可能な)合併症がある。 jarを変更する必要があるときは、通常、zipファイルエディタを使用します。 – Erik