- PR -

JNIに関して

投稿者投稿内容
インスパ
大ベテラン
会議室デビュー日: 2002/08/30
投稿数: 125
投稿日時: 2006-06-14 20:05
初めてJNIを使おうと現在勉強しているのですが
HelloWorld.javaを作成し
・javacでコンパイル
・javahでヘッダファイルを作成
しようとしているのですが、javahでエラーが出ます

D:\JavaTest\Java>javah -jni HelloWorld
Error: クラス HelloWorld が見つかりません。

何が原因なのかわかる方がいらっしゃれば、ご教授願います

uk
ぬし
会議室デビュー日: 2003/05/20
投稿数: 1155
お住まい・勤務地: 東京都
投稿日時: 2006-06-14 20:27
クラスパス上にHelloWorld.classがないからでは? もしHelloWorld.classがカレント
ディレクトリに生成されているのであれば、

javah -classpath . -jni HelloWorld

と実行してみてください。
インスパ
大ベテラン
会議室デビュー日: 2002/08/30
投稿数: 125
投稿日時: 2006-06-14 21:00
早速の返事ありがとうございます。
確かにクラスパスが通っていませんでした.....

あと、追加で質問してもよろしいでしょうか?
今やりたいことが実現可能かどうかのご指示をいただければ助かります。

1.まず、既存のCで作られたdll(画面プログラム)があります。
2.Webの画面からあるボタンが押されるとJNIを利用しCのdllを実行して、画面が表示されます
3.画面での入力結果(OK/NG)をWebに戻し、結果をWeb画面で表示する
  Cのdllを呼んだところでWeb画面は処理が待っていて、Cのdll画面の結果を受け取るイメージでいます

このようなことがやりたいのですが、実現可能でしょうか?
uk
ぬし
会議室デビュー日: 2003/05/20
投稿数: 1155
お住まい・勤務地: 東京都
投稿日時: 2006-06-14 21:21
まず、「Cで作られたdll(画面プログラム)」をサーバ上で実行し、その画面をクライ
アントに表示しようと考えているのであれば、それはできません。もし既存の画面
ありきであれば、Webでやろうというのはあまり良い考えとは思えません。
インスパ
大ベテラン
会議室デビュー日: 2002/08/30
投稿数: 125
投稿日時: 2006-06-14 21:56
説明不足でしたが、Cで作成されたdllは各クライアントに入っています。
Webでボタンが押されたときには各クライアントのdllを起動したいです。
また、Cで作成されたdllはWindowsのコアな部分にアクセスするものなので
Web(java)での開発が無理なため、既存のCのdllを使う予定でおります。
uk
ぬし
会議室デビュー日: 2003/05/20
投稿数: 1155
お住まい・勤務地: 東京都
投稿日時: 2006-06-14 22:05
サーバサイドで動くものとクライアントサイドで動くものの区別はついていますか?

クライアントサイドに存在するDLLをキックするのであれば、署名付きアプレット
もしくはActiveXを使うことになるでしょう。また、アプレットの場合は別途JNIの
DLLを配布する必要がありますね。

あるいは、クライアントPCにDLLをキックする常駐プログラムを起動しておき、その
プログラムをサーバから呼び出す、ということも考えられなくはないですが、いくら
なんでも複雑すぎるでしょう。
インスパ
大ベテラン
会議室デビュー日: 2002/08/30
投稿数: 125
投稿日時: 2006-06-15 10:44
>サーバサイドで動くものとクライアントサイドで動くものの区別はついていますか?
あまり考えていませんでした、言われてみれば確かにそうですね。

できれば、クライアントには何もインストールや配布はしたくないので
ActiveXの方法を調べてみます。
もし、このあたりの情報をご存知であればお教えいただければ助かります、
また、情報が載っているWebページも構いませんのでご教授願います。
unibon
ぬし
会議室デビュー日: 2002/08/22
投稿数: 1532
お住まい・勤務地: 美人谷        良回答(20pt)
投稿日時: 2006-06-15 11:50
どんなシステム構成でやろうとされているのかは良くは知りませんが、日頃、ネットサーフィン(って今時言わないかも)していても見かけたことすらないようなシステム構成で作るのはやめておいたほうが良いと思います。
そういう意味から言って、日頃、よその Web サイトのシステム構成をパターン化して分類しておくほうが良いでしょう。あくまでも外の部分しか見えませんが、中の仕組みはある程度類推できます。

--
unibon {B73D0144-CD2A-11DA-8E06-0050DA15BC86}

スキルアップ/キャリアアップ(JOB@IT)