系统报java.lang.NoClassDefFoundError错误

lazyfox 2012-10-24 10:01:50
我就很郁闷阿,刚刚开始的时候也没有出现这个问题,后来也没有对这块的代码做更改,怎么就报这种错误呢。

现在的情况是:Tomcat启动正常,系统许多功能正常,但是点击部分功能的时候就会出现这个错误。请问大家有碰到过这种问题么?小弟在这里先谢谢各位咯、

...全文
153 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
lazyfox 2012-10-25
  • 打赏
  • 举报
回复
嗯 。谢谢哥们 。
最后找负责人,他说忘记给我几个dll文件了,我晕倒了、。。。。
加进去就好了,好像是公司人写的连接打印机,还有其它的什么东西的文件。

最后,感谢大家的回复。祝大家生活愉快,事业顺心!
lazyfox 2012-10-24
  • 打赏
  • 举报
回复
大哥真人也,哈哈,就是这个问题。[Quote=引用 4 楼 的回复:]

这问题一般是jar包问题,多或者少的事情。
[/Quote]
lazyfox 2012-10-24
  • 打赏
  • 举报
回复
我shit,找到原因了。原来 是个ProductLineModel类中定义了加载Java2C类库。
static
{
System.loadLibrary("Java2C");
}
去掉就好了,可是我想问下,这个是去哪加载?一般项目没有做更改,为啥会有问题呢?


[Quote=引用 3 楼 的回复:]

jar包打包好没关系(不需要知道jar包中源码的),只要找到项目中使用jar包中类的入口点就行,希望找到欲使用却找不到的类的类名

createNewModel开始往下
[/Quote]
dracularking 2012-10-24
  • 打赏
  • 举报
回复
不都是一样的错误吗?只不过你现在列出的stack trace自forName0以下有更详细的了

java.lang.UnsatisfiedLinkError: no Java2C in java.library.path

看一下Java2C什么类,应该在哪个jar包的
lazyfox 2012-10-24
  • 打赏
  • 举报
回复
刚刚细细查看下发现、。
type Exception report

message

description The server encountered an internal error () that prevented it from fulfilling this request.

exception

javax.servlet.ServletException: Servlet execution threw an exception
com.innet.base.util.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:72)


root cause

java.lang.UnsatisfiedLinkError: no Java2C in java.library.path
java.lang.ClassLoader.loadLibrary(ClassLoader.java:1682)
java.lang.Runtime.loadLibrary0(Runtime.java:822)
java.lang.System.loadLibrary(System.java:993)
com.innet.application.model.ProductLineModel.<clinit>(ProductLineModel.java:33)
java.lang.Class.forName0(Native Method)
java.lang.Class.forName(Class.java:164)
com.icbc.marmot.core.model.ModelEngine.createNewModel(ModelEngine.java:32)
com.icbc.marmot.core.controller.BaseAction.execute(BaseAction.java:87)
org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:431)
org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:236)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:414)
javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
com.innet.base.util.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:72)

第一次打开页面的时候报上面的错误,再刷新的时候就一直报帖子里面的那个截图错误了。[Quote=引用 3 楼 的回复:]

jar包打包好没关系(不需要知道jar包中源码的),只要找到项目中使用jar包中类的入口点就行,希望找到欲使用却找不到的类的类名

createNewModel开始往下
[/Quote]
  • 打赏
  • 举报
回复
这问题一般是jar包问题,多或者少的事情。
dracularking 2012-10-24
  • 打赏
  • 举报
回复
jar包打包好没关系(不需要知道jar包中源码的),只要找到项目中使用jar包中类的入口点就行,希望找到欲使用却找不到的类的类名

createNewModel开始往下
lazyfox 2012-10-24
  • 打赏
  • 举报
回复
这个项目是管理系统,你懂得,左边一列菜单。部分菜单下的功能可以,有几个报这个错误。

关键几个jar包都是公司老一辈人写好打包好的。。。。
[Quote=引用 1 楼 的回复:]

刚开始有点击这个部分吗?

不能保证整个项目没有一丝变化吧?报错是找不到类,基本就是找不到含此类的jar包,可以调试定位的
[/Quote]
dracularking 2012-10-24
  • 打赏
  • 举报
回复
刚开始有点击这个部分吗?

不能保证整个项目没有一丝变化吧?报错是找不到类,基本就是找不到含此类的jar包,可以调试定位的
dracularking 2012-10-24
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 的回复:]

我shit,找到原因了。原来 是个ProductLineModel类中定义了加载Java2C类库。
static
{
System.loadLibrary("Java2C");
}
去掉就好了,可是我想问下,这个是去哪加载?一般项目没有做更改,为啥会有问题呢?


引用 3 楼 的回复:

jar包打包好没关系(不需要知道jar包中源码的),只要找到项目中使用jar……
[/Quote]
原来如果存在这段代码,很有可能仍是需要的,现在去掉的话,问题可能只是暂时不出现。

library路径一般是由这个jvm变量指定的 java.library.path
基本上就是启动时没加jvm参数:
-Djava.library.path="xxx"

详细:
http://blog.csdn.net/forandever/article/details/5983846

System.loadLibrary 参数为库文件名,不包含库文件的扩展名。
例如你可以这样载入一个windows平台下JNI库文件
System. loadLibrary ("TestJNI");

这里,TestJNI.dll 必须是在java.library.path这一jvm变量所指向的路径中。
可以通过如下方法来获得该变量的值:
System.getProperty("java.library.path");
默认情况下,在Windows平台下,该值包含如下位置:
1)和jre相关的一些目录
2)程序当前目录
3)Windows目录
4)系统目录(system32)
5)系统环境变量path指定目录

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧