先日、初めてCocoaでアプリケーションを作ったのですが、
私のMac以外では、ウィンドウが開くだけで、動作してくれないという状況に陥っています。
単にビルドをReleaceにすれば大丈夫だと思っていたので、
原因がわからず四苦八苦しております。
他に配布する際に気をつけなければならないことがあるのでしょうか?
つたない文章な上に、初歩的な疑問なのかもしれませんがよろしくお願いします。
On 2010/02/01, at 6:08, hirororo wrote:
> 先日、初めてCocoaでアプリケーションを作ったのですが、
> 私のMac以外では、ウィンドウが開くだけで、動作してくれ
> ないという状況に陥っています。
> 単にビルドをReleaceにすれば大丈夫だと思っていたので、
> 原因がわからず四苦八苦しております。
Mac のソフトの場合は配布するときに特別なことをする必要はとく
にないです。
うまく動作していなとき、コンソールになにかエラーメッセージは
表示されていないですか?
たぶん共有ライブラリかなにかがそのアプリケーションに含まれて
いないのではないかと思いますが。
-----------------------------------------------------
Satoshi Matsumoto (Artman21 Inc.)
sat...@artman21.co.jp http://www.artman21.com/
TEL/FAX +81-466-24-1028
On 2月1日, 午前10:16, MATSUMOTO Satoshi <sato...@mac.com> wrote:
> うまく動作していなとき、コンソールになにかエラーメッセージは
> 表示されていないですか?
> たぶん共有ライブラリかなにかがそのアプリケーションに含まれて
> いないのではないかと思いますが。
コンソールはチェックしていないのですが、(基本的なことをしていなくてすみません)
テストをしてくれた友人からの問題レポートのなかに
Application Specific Information:
*** Terminating app due to uncaught exception
'NSInvalidArgumentException', reason: 'launch path not accessible'
と書いてあるところがありました。
どのpathなのかよくわからないのですが・・・
1.OS のバージョンが違う。
2.存在しないディレクトリ・ファイルをアクセスしている。
3.アクセス権の無いディレクトリ・ファイルをアクセスしている。
よくやるのは上記かな・・・
アプリ内で他のアプリやプログラムを呼び出すのは2に該当ですね。
Sinbad
OSは10.6.2で開発して、ビルドする時に10.5を選択したのですが、
10.5以上を対象にするには、これではダメだったりするのでしょうか?
ファイルのアクセスは、同じアプリ内のResourcesにおいてあるshファイル(アクセス権は-rwxrwxrwx)にしかしていないのです
が・・・
もしかして、この辺りで問題が起こっているんでしょうか・・・
10.5なら使えるけど 10.3 だと使えないとか、相手が使っているOSに合わせないと動かない機能があると云う事です。
相手のOSのヴァージョンはご存知ですか?
> ファイルのアクセスは、同じアプリ内のResourcesにおいてあるshファイル(アクセス権は-rwxrwxrwx)にしかしていないのです
shファイル内で別のファイルにアクセスしていませんか?
または、shファイルが絶対パスで指定されていて、ルートからの同じディレクトリ位置に無いといけない事は無いですか?
Sinbad
> --
> このグループから退会するには、次へメールをお送りください。
> cocoa-dev-jap...@googlegroups.com
> その他のオプションについては以下にアクセスしてください。
> http://groups.google.com/group/cocoa-dev-japan
はい、テストしてくれた人は全員10.5以上でした。
> shファイル内で別のファイルにアクセスしていませんか?
そういえば、していました^^;
ユーザーが作成した普通のテキストに対してなのですが、これがまずいのでしょうか?
> または、shファイルが絶対パスで指定されていて、ルートからの同じディレクトリ位置に無いといけない事は無いですか?
shファイルのパスは [[NSBundle mainBundle] ]pathForResource:(NSString *)name
ofType:(NSString *)extension]
で取得しているので、大丈夫だと思います。
齊藤
shファイル内で別のファイルにアクセスしていませんか?そういえば、していました^^;
ユーザーが作成した普通のテキストに対してなのですが、これがまずいのでしょうか?
Application Specific Information:
*** Terminating app due to uncaught exception
'NSInvalidArgumentException', reason: 'launch path not accessible'
もう1つ思い出しました。
アプリケーションを起動するディレクトリを「~か~にしろ、そうしないと・・・」と云う記述をどこかのマニュアルで読んだ記憶があります。
よくやるのは、CDやメモリディスクに入ってるアプリをそのまま起動して「作業領域が無い」と言われる事ですね。
Sinbad
ん~ローカルに保存した上でテストしてもらったのですが、ローカルでもディレクトリが関係あるということでしょうか?
なんだか、質問攻めで申し訳ないです。
齊藤
>たぶん共有ライブラリかなにかがそのアプリケーションに含まれて
>いないのではないかと思いますが。
初心者なので、共有ライブラリが何なのかよくわからないのですが、
何か組み込むような作業が必要があるのでしょうか?
'NSInvalidArgumentException', reason: 'launch path not accessible'
でgoogleするといろいろ出てきますが、それらのケースで
は、アプリケーション内部から起動しようとしているunixコ
マンドのファイルが期待するpathに存在していないためが多
いようです。自分とほかのひとで、そのコマンドに対する link
や set path の設定が違うのではないでしょうか?
-----------------------------------------------------
Satoshi Matsumoto <sat...@mac.com>
816-5 Odake, Odawara, Kanagawa, Japan 256-0802
えと・・・
あんまり良く無い例えですけど、ls が /bin/ls になかったりするだとか、
shファイルのパスがおかしなことになっていると
起こるってことですよね?
テストしてくださった方々の、コマンドファイルの link や path がどうなっているか、確かめてみます。
何かCocoaというよりUnixな話になってしまってすみません。
そして、根気強くおつきあいくださってありがとうございます。
齊藤
1. name と extension は固定の文字列だと思いますが、pathForResource: がnilを返した場合どうなりますか?
2.同じ名前で動作が違う sh ファイルが複数存在する場合を想定していますか?
3.sh ファイルはどうやって起動していますか?
判断材料が少ないのでエラーメッセージからくらいしか原因を追えないですね。
ソースまるごとメールに添付すれば、石でも卵でも投げ返して貰えると思いますよ。
Sinbad
わざとnilを返すようにしてみたのですが、 No such file or directory のエラーを掃くのですが、
クラッシュしたりはしないみたいです。
> 2.同じ名前で動作が違う sh ファイルが複数存在する場合を想定していますか?
う、想定していませんでした…
> 3.sh ファイルはどうやって起動していますか?
> 判断材料が少ないのでエラーメッセージからくらいしか原因を追えないですね。
> ソースまるごとメールに添付すれば、石でも卵でも投げ返して貰えると思いますよ。
了解です。
思えば曖昧な質問ですよね・・・
ソースを添付させて頂きます。まだ、初めて1ヶ月も経っていないので、わかりにくいコードかもしれませんがお許しください。
そして、本当にソースまるごとですみませんm(_ _)m
http://ppixy.nomaki.jp/SayJapanese++xcode.zip
こちら(下のURL)は、shファイルが原因なのかもしれないということで、全てObject-Cに書き換えたものです。
http://ppixy.nomaki.jp/SayJapanese++0.03xcode.zip
アプリはLimeChatのログから文章を拾って、
mecab と SayKanaというソフトを使って日本語読み上げをさせようというものです。
お手数でなければ、チェックのほうよろしくお願いします。
齊藤
shファイルがあるほうの
appController.m
の63行目からの
-(void)run{
…
}
の関数で問題が起きているようです。
…
Application Specific Information:
*** Terminating app due to uncaught exception
'NSInvalidArgumentException', reason: 'launch path not accessible'
*** Call stack at first throw:
…
Thread 4 Crashed:
0 com.apple.CoreFoundation 0x952aaa37
___TERMINATING_DUE_TO_UNCAUGHT_EXCEPTION___ + 7
1 libobjc.A.dylib 0x97ec6509 objc_exception_throw + 56
2 com.apple.CoreFoundation 0x95260138 +[NSException
raise:format:arguments:] + 136
3 com.apple.CoreFoundation 0x952600aa +[NSException
raise:format:] + 58
4 com.apple.Foundation 0x990908d1 -[NSConcreteTask
launchWithDictionary:] + 487
5 com.apple.Foundation 0x990906e4 -[NSConcreteTask launch]
+ 41
6 com.PPixy.SayJapanese++ 0x00003173 -[appController run] +
1702
7 com.apple.Foundation 0x9903e8d8 -[NSThread main] + 45
8 com.apple.Foundation 0x9903e888 __NSThread__main__ +
1499
9 libSystem.B.dylib 0x9070bfbd _pthread_start + 345
10 libSystem.B.dylib 0x9070be42 thread_start + 34
テストありがとうございます!!
松本様やSinbad様が仰っていたように、パスが問題なのですね。
path の扱いを変えて対応してみます。
これ以上他に問題がないことを祈ります。
返信をくださった松本様とSinbad様には、大変感謝をしております。
私の拙い振る舞いに色々と無礼があったと思いますが、おつきあい頂きありがとうございました。
齊藤