找不到javax.serverlet.GenericServlet的类文件

时间:2012-10-31 11:43:46

标签: java servlets java-native-interface hessian javah

我已经在class->头文件中停留了几天!

我已通过http://netbeans.org/kb/docs/cnd/beginning-jni-linux.htmlhttp://ringlord.com/jni-howto.html在客户端尝试了jni。它成功地从JNI(.cpp)文件中返回“hello JNI C ++”。以下是我的步骤:

  1. 在client.java中创建本机函数
  2. 在Netbeans IDE上清理并构建此client.java,然后生成client.class文件
  3. javah -jni [package]。[classname]
  4. 创建一个动态库C ++项目作为第一个引用,并将client.h放入源文件中,并将一些hello代码放入(.cpp)文件---> 有效!
  5. 但是,我试图在servlet端做同样的事情而且它不能正常工作

    1. Servlet.java-> Servlet.class:ok!
    2. Servlet.class-> Servlet.h:失败!!!! 错误:无法访问javax.servlet.GenericServlet 未找到javax.servlet.GenericServlet的类文件
    3. 以下是我迄今为止找到并尝试过的解决方案,

      • 检查包名称

      • sudo gedit / etc / profile,sudo gedit .bashrc,sudo / etc / environment;添加JAVA_HOME&对它们进行CLASSPATH,并将它们更新为源代码,然后回显$ JAVA_HOME,回显$ CLASSPATH以验证

      • 下载servlet-api-6.0.14.jar&来自http://www.jarfinder.com/index.php/java/info/javax.servlet.GenericServlet的servlet-api-5.0.16.jar ,并通过netbeans IDE-> server-> property-> libraries->添加上面两个(.jar)添加JAR

      请告诉我如何弄清楚这个问题,非常感谢!!顺便说一下,我正在使用hessianServlet

1 个答案:

答案 0 :(得分:2)

NativeWrapper.java(仅在此类上运行javah

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();
  }
}