2 ljwbupt ljwbupt 于 2016.04.20 10:33 提问

JAVA MVC项目报错:java.lang.NoClassDefFoundError:

错误信息如下:

java.lang.NoClassDefFoundError: Could not initialize class SketchYourHouse.MediumInCJ
SketchYourHouse.SketchBeans.savePic(SketchBeans.java:56)
SketchYourHouse.SketchServlet.doPost(SketchServlet.java:46)
javax.servlet.http.HttpServlet.service(HttpServlet.java:648)
javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)

整个项目网站部分用java MVC(jsp+servlet+javabeans)搭建,核心算法用c++写的,然后通过JNI与javabeans连接起来,SketchBeans就是我的javabeans,声明部分是这样写的:
MediumInCJ mcj = new MediumInCJ();
System.out.println("I got " + mcj.getProbeFeature() + "/n");

MediumInCJ()里是这样写的:
public class MediumInCJ {

static{
System.loadLibrary("dll/DLLforProbe");
}
public native int getProbeFeature();

}

请问各位大神我这是哪里出问题了,个人觉得声明这部分没什么问题阿···

2个回答

fk002008
fk002008   2016.04.20 10:37
已采纳

System.loadLibrary("dll/DLLforProbe");

没有找到定义的类
你使用native时候写的c++代码再检查下。
看看路径了什么的对不对。

ljwbupt
ljwbupt 回复lambda-fk: 还是一样结果(哭笑不得表情)
一年多之前 回复
ljwbupt
ljwbupt 回复lambda-fk: 还是一样结果(哭笑不得表情)
一年多之前 回复
fk002008
fk002008 对,不要弄子目录了,你把那些h文件和class文件和dll文件放到一起去试试
一年多之前 回复
ljwbupt
ljwbupt 回复lambda-fk: 我发现我把MVC的内容去掉,保留成功一个java本地项目的样子,这时DLL那块是没问题的,能顺利调用里面的C++函数
一年多之前 回复
ljwbupt
ljwbupt 回复lambda-fk: 您说和class文件放在一起是指放在build/classes下面吗?我jdk和vs都是64位的
一年多之前 回复
fk002008
fk002008 对的。 那你就dll/DLLforProbe 这里有夹层路径不要这个dll了。直接和class文件放到一起。 另外你的jdk是32位还是64位 VS是32还是64
一年多之前 回复
ljwbupt
ljwbupt 回复lambda-fk: 第三条意思是不是在VS上把jdk里的jni.h和jni_md.h加入头文件然后再生成DLL?是的话这几条我确认都做了,哭瞎
一年多之前 回复
fk002008
fk002008 1:使用java -jni MediumInCJ来生成后缀名为.h的头文件 MediumInCJ.h 把这个文件放到%JAVA_HOME%\include目录下 这步做了吧 2:dll文件名字是DLLforProbe.dll 3:生成dll文件的时候加入了 参数 %java_home%\include -I%java_home%\include\win32
一年多之前 回复
fk002008
fk002008 回复ljwbupt: 作如下的确认:
一年多之前 回复
ljwbupt
ljwbupt 我感觉C++代码应该对吧,那块要是错了话报的应该是java.lang.UnsatisfiedLinkError?
一年多之前 回复
CSDNXIAON
CSDNXIAON   2016.04.20 10:42

tomcat启动报错 - java.lang.NoClassDefFoundError: FilterConfig
JBOSS启动报错java.lang.NoClassDefFoundError:
Eclipse启动报错java.lang.NoClassDefFoundError
----------------------同志你好,我是CSDN问答机器人小N,奉组织之命为你提供参考答案,编程尚未成功,同志仍需努力!

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!