我已经在类->头文件中卡住了几天了!
我已经在客户端上尝试过jni http://netbeans.org/kb/docs/cnd/beginning-jni-linux.html和 http://ringlord.com/jni-howto.html 。它成功地从 JNI 的 (.cpp) 文件返回“hello JNI C++”。这是我的步骤:
- 创建 native 函数并在 client.java 中
- 在 Netbeans IDE 上清理并构建此 client.java,然后生成 client.class 文件
- javah –jni [包].[类名]
- 按照第一个引用方法创建一个动态库 C++ 项目,并将 client.h 放入源文件中,并将一些 hello 代码放入 (.cpp) 文件 ---> 它可以工作! <
但是,我尝试在 servlet 端执行相同的操作,但它不起作用
- Servlet.java->Servlet.class:好的!
- Servlet.class->Servlet.h:失败!!! 错误:无法访问 javax.servlet.GenericServlet 找不到 javax.servlet.GenericServlet 的类文件
以下是我迄今为止找到并尝试过的解决方案,
检查包名
sudo gedit/etc/profile、sudo gedit .bashrc、sudo/etc/environment;在它们上添加 JAVA_HOME 和 CLASSPATH,并获取它们进行更新,然后 echo $JAVA_HOME,echo $CLASSPATH 进行验证
- 从 http://www.jarfinder.com/index.php/java/info/javax.servlet.GenericServlet 下载 servlet-api-6.0.14.jar 和 servlet-api-5.0.16.jar ,并通过netbeans IDE->server->property->libraries->Add JAR添加以上两个(.jar)
请告诉我如何解决这个问题,非常感谢!顺便说一句,我正在使用 hessianServlet
最佳答案
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();
}
}
关于java - 找不到 javax.servlet.GenericServlet 的类文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13157134/