- - PR -
JNIに関して
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2006-06-14 20:05
初めてJNIを使おうと現在勉強しているのですが
HelloWorld.javaを作成し ・javacでコンパイル ・javahでヘッダファイルを作成 しようとしているのですが、javahでエラーが出ます D:\JavaTest\Java>javah -jni HelloWorld Error: クラス HelloWorld が見つかりません。 何が原因なのかわかる方がいらっしゃれば、ご教授願います |
|
投稿日時: 2006-06-14 20:27
クラスパス上にHelloWorld.classがないからでは? もしHelloWorld.classがカレント
ディレクトリに生成されているのであれば、 javah -classpath . -jni HelloWorld と実行してみてください。 |
|
投稿日時: 2006-06-14 21:00
早速の返事ありがとうございます。
確かにクラスパスが通っていませんでした..... あと、追加で質問してもよろしいでしょうか? 今やりたいことが実現可能かどうかのご指示をいただければ助かります。 1.まず、既存のCで作られたdll(画面プログラム)があります。 2.Webの画面からあるボタンが押されるとJNIを利用しCのdllを実行して、画面が表示されます 3.画面での入力結果(OK/NG)をWebに戻し、結果をWeb画面で表示する Cのdllを呼んだところでWeb画面は処理が待っていて、Cのdll画面の結果を受け取るイメージでいます このようなことがやりたいのですが、実現可能でしょうか? |
|
投稿日時: 2006-06-14 21:21
まず、「Cで作られたdll(画面プログラム)」をサーバ上で実行し、その画面をクライ
アントに表示しようと考えているのであれば、それはできません。もし既存の画面 ありきであれば、Webでやろうというのはあまり良い考えとは思えません。 |
|
投稿日時: 2006-06-14 21:56
説明不足でしたが、Cで作成されたdllは各クライアントに入っています。
Webでボタンが押されたときには各クライアントのdllを起動したいです。 また、Cで作成されたdllはWindowsのコアな部分にアクセスするものなので Web(java)での開発が無理なため、既存のCのdllを使う予定でおります。 |
|
投稿日時: 2006-06-14 22:05
サーバサイドで動くものとクライアントサイドで動くものの区別はついていますか?
クライアントサイドに存在するDLLをキックするのであれば、署名付きアプレット もしくはActiveXを使うことになるでしょう。また、アプレットの場合は別途JNIの DLLを配布する必要がありますね。 あるいは、クライアントPCにDLLをキックする常駐プログラムを起動しておき、その プログラムをサーバから呼び出す、ということも考えられなくはないですが、いくら なんでも複雑すぎるでしょう。 |
|
投稿日時: 2006-06-15 10:44
>サーバサイドで動くものとクライアントサイドで動くものの区別はついていますか?
あまり考えていませんでした、言われてみれば確かにそうですね。 できれば、クライアントには何もインストールや配布はしたくないので ActiveXの方法を調べてみます。 もし、このあたりの情報をご存知であればお教えいただければ助かります、 また、情報が載っているWebページも構いませんのでご教授願います。 |
|
投稿日時: 2006-06-15 11:50
どんなシステム構成でやろうとされているのかは良くは知りませんが、日頃、ネットサーフィン(って今時言わないかも)していても見かけたことすらないようなシステム構成で作るのはやめておいたほうが良いと思います。
そういう意味から言って、日頃、よその Web サイトのシステム構成をパターン化して分類しておくほうが良いでしょう。あくまでも外の部分しか見えませんが、中の仕組みはある程度類推できます。 -- unibon {B73D0144-CD2A-11DA-8E06-0050DA15BC86} |