0

クラス->ヘッダーファイルに数日間留まっています!

http://netbeans.org/kb/docs/cnd/beginning-jni-linux.htmlおよびhttp://ringlord.com/jni-howto.htmlによってクライアントでjniを試しました。そして、JNIの(.cpp)ファイルから「helloJNIC++」を返すことに成功しました。これが私のステップです:

  1. ネイティブ関数を作成し、client.javaに
  2. Netbeans IDEでこのclient.javaをクリーンアップしてビルドし、client.classファイルを作成します
  3. javah –jni[パッケージ]。[クラス名]
  4. 最初の参照と同じようにダイナミックライブラリC++プロジェクトを作成し、client.hをソースファイルに入れ、いくつかのhelloコードを(.cpp)ファイルに入れます--->動作します!

しかし、サーブレット側で同じことをしようとしましたが、機能しません

  1. Servlet.java-> Servlet.class:ok!
  2. Servlet.class-> Servlet.h:失敗!!!! エラー:javax.servlet.GenericServletのjavax.servlet.GenericServletクラスファイルにアクセスできませんが見つかりません

以下は私がこれまでに見つけて試した解決策です、

  • パッケージ名を確認してください

  • sudo gedit / etc / profile、sudo gedit .bashrc、sudo / etc / environment; それらにJAVA_HOMEとCLASSPATHを追加し、それらをソースして更新してから、$ JAVA_HOMEをエコーし​​、$CLASSPATHをエコーし​​て確認します。

  • http://www.jarfinder.com/index.php/java/info/javax.servlet.GenericServletからservlet-api-6.0.14.jarとservlet-api-5.0.16.jarをダウンロードし 、上記の2つを追加します( .jar)by netbeans IDE-> server-> property-> libraries-> Add JAR

この問題を理解する方法を教えてください、どうもありがとうございました!!ところで、私はhessianServletを使用しています

4

1 に答える 1

2

javahNativeWrapper.java(このクラスでのみ実行します)

class NativeWrapper {
  // either
  static {
    System.loadLibrary("MyOpenCVNative");
  }
  // or
  public NativeWrapper() {
    System.loadLibrary("MyOpenCVNative");
  }
  public native void callNative();
}

MyServlet.java

class MyServlet extends javax.servlet.GenericServlet {
  private NativeWrapper nativeWrapper = new NativeWrapper();

  public void someServletMethod() {
    nativeWrapper.callNative();
  }
}
于 2012-10-31T13:50:13.987 に答える