JavaとObjective-c間でJNIを使用してGUIのアプリケーション連携を行いたいのですが
エラーになってしまいます。
アプリケーションの起動をNSApplicationMain関数を使用してしようとしてるのですが、
JNIの関数では使用できないのでしょうか?
一部抜粋ですが、以下のように呼び出しています。
また、このように連携を行いたい場合、どのようにするべきでしょうか?
ご教授ください。
JNIEXPORT void JNICALL Java_JniApp_start
(JNIEnv *env, jobject this)
{
int argc = 0;
char *argv[0];
NSApplicationMain(argc, (const char**)argv);
}
こちらをJava側で呼び出すとエラーとなります。
エラー内容は以下になります。
java[1646:1303] No Info.plist file in application bundle or no NSPrincipalClass in the Info.plist file, exiting
A 回答 (2件)
- 最新から表示
- 回答順に表示
No.1
- 回答日時:
Objective-CというよりはCocoaの話だと思うんですが、JNIの話はひとまず置いといて
int main(int argc, char **argv)
{
int ac = 0;
const char *av[0];
return NSApplicationMain(ac, av);
}
で、動作するアプリケーションは作れるんでしょうか?
私はObjective-CもCocoaも知らないのですが、av[0]にある文字列を元に動作するのに必要な設定ファイル名を求めてたりしてそうな気がするんですけど。
この回答への補足
回答ありがとうございます。
質問いただいている形で動作するアプリケーションはつくれます。動作確認済みです。
av[0]は、起動引数なだけで、他に設定などを指定していることはありませんでした。
アプリケーション動作に必要になる設定などは、アプリケーションパッケージ内に配置されており、
NSApplicationMainでそれを読み込んで動作するようなんですが。。。
JNIとして作成したダイナミックライブラリ(Macなのでjnilib)にはNSApplicationMainで必要とする設定ファイルをもっていないので
動作するアプリケーションに配置されている設定ファイルなどを様々な場所に配置してみるのですが
配置位置が悪いのか、読み込まれないのか、同じエラーで動作しませんでした。
NSApplicationMain(ac, av);
この関数を使用すると中で、画面描画などの処理が行われるようですが、
それに必要な設定や値は結局引数や設定ファイルの配置ではどうにもなりませんでした。
Java側でawtを使用して、そのスレッドにNSWindowをのせWebViewで読み込みとすればブラウザは機能することがわかりました。
まだ完全にシステムは完成していませんが、一旦ココで締切としようと思います。
ご協力ありがとうございました。
No.2
- 回答日時:
>アプリケーション動作に必要になる設定などは、アプリケーションパッケージ内に配置されており、
>NSApplicationMainでそれを読み込んで動作するようなんですが。。。
ということはNSApplicationMainは第1引数, 第2引数以外の何らかの手段でアプリケーションパッケージの場所を特定しているという事ですよね。
それがどのような手段なのか調べてみるのがいいのかもしれませんね。
役に立つかどうかわからない回答ですいません。
引き続きご回答ありがとうございます。
wormholeさんがおっしゃるように引数とは別の手段で描画、他クラスの呼び出しに必要な設定を得ているようです。
その手段というのがどのようなのか、引き続き調べてみます。
お答えいただいて嬉しいです。
ありがとうございます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# C言語 共用体について コマンドライン引数で値を2つ入力したときに、argv[2]の値をUNI u1 4 2022/04/25 20:34
- C言語・C++・C# バイナリファイルをコピーするのにかかる時間を測りたいのですが実行するとFatel error:gli 2 2022/11/03 01:10
- C言語・C++・C# c言語の問題の説明、各所ごとに 5 2023/07/26 11:03
- C言語・C++・C# const char** p;のとき、free(p)でC4090エラーとなるのはなぜですか 3 2023/03/31 16:28
- Java java 入力 3 4 3 出力 ABC DEFG HIJ このようなプログラムの書き方を教えてくだ 2 2022/07/15 14:18
- C言語・C++・C# Cのdoubleの浮動小数点表示について 3 2023/04/17 13:14
- C言語・C++・C# C言語のエラーについて 2 2022/07/11 13:56
- C言語・C++・C# C++プログラミングコードにポリモーフィズムを取り入れ方を教えてください。 2 2023/06/09 11:17
- Ruby pythonエラー 4 2022/11/11 19:12
- その他(プログラミング・Web制作) ラズパイ上の、pythonのエラーについて 1 2023/04/12 23:27
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
vba クリップボードクリアにつ...
-
IISワーカープロセスが原因でCP...
-
AccessとVBの違いについて
-
C#のWindowsフォームアプリケー...
-
帳票出力について
-
ASP(VB).NETでの背景色変更
-
予約システムの開発ツール
-
Javaの種類ってどんだけあるの?
-
テキストボックスへの入力に対...
-
プラグインとパッチの違いは?
-
Javaでのエラーについて
-
UWSCが、動作環境の違いで動か...
-
正規表現について質問です。 カ...
-
javaのジェネリックスでTとEの...
-
Eclipseソース開発画面の行番号...
-
javaでの#if 0 #endif文
-
UnknownHostException
-
大学の授業のプログラミング、...
-
「C#ができればJavaもできる」...
-
reactを利用できるnode.jsのバ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
vba クリップボードクリアにつ...
-
IISワーカープロセスが原因でCP...
-
VBのWPFとはなんでしょうか?
-
unzip32.dllの利用について(64b...
-
プラグインとパッチの違いは?
-
意味が分からないエラー
-
帳票出力について
-
java3dが動かない
-
32ビットのアプリで、64ビットO...
-
ASP(VB).NETでの背景色変更
-
ログオフ中でもアプリケーショ...
-
C#のメモリマップドファイルに...
-
AccessとVBの違いについて
-
Java でネイティブアプリケーシ...
-
このVBAでExcelアプリケーショ...
-
HTMLアプリケーションの作成
-
[VB.2005]クライアントからWEB...
-
C++からC#へ
-
JAVAプログラムをWEB表示させる...
-
SurfaceViewの一時停止や再開方法
おすすめ情報