0

Cocoa アプリで jar を実行しようとしています。私の調査によると、 を使用する必要がありますNSTask。しかし、私はsystem()仕事に行くことしかできません。例えば:

// This works
system("cd /path/to ; /usr/bin/java -jar file.jar");

しかし、これはうまくいきません:

// This does not work
NSTask *task = [[NSTask alloc] init];
[task setLaunchPath:@"/usr/bin/java"];
[task setArguments:[NSArray arrayWithObjects: @"-jar", @"/path/to/test.jar", nil] ];
[task launch];

アプリを実行すると、依存関係が見つからないため、クラスが見つからない Java 例外が発生します。

4

1 に答える 1

5

コードに一般的なエラーはありません。自分で試してみました。

Java ファイルの実行に必要な.profile.bashrcなどでCLASSPATH環境変数を定義していると仮定します。

system()シェルを使用してコマンドを実行するため、CLASSPATH はjavaコマンドによって継承されます。

NSTask一方、シェルを使用しないjavaため、プロファイルからの CLASSPATH についてはわかりません。

@"-cp", @"<your class path>"解決策は、引数に追加することです。

アップデート

議論で判明したように、この場合の問題はクラスパスではなく、現在の作業ディレクトリです。追加する

[task setCurrentDirectoryPath:@"/path/to"]

問題を解決しました。

于 2012-08-14T09:40:47.237 に答える