我在Tomcat 7中部署了一个Java web应用程序,我得到了如下异常:
Sep 29, 2015 1:36:56 PM org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Servlet.service() for servlet [arms-api] in context with path [] threw exception [Handler processing failed; nested exception is java.lang.NoClassDefFoundError: org/objenesis/Objenesis] with root cause
java.lang.ClassNotFoundException: org.objenesis.Objenesis
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1714)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1559)
at ch.lambdaj.proxy.ProxyUtil.createProxy(ProxyUtil.java:52)
at ch.lambdaj.proxy.ProxyUtil.createIterableProxy(ProxyUtil.java:76)
at ch.lambdaj.function.aggregate.ProxyAggregator.createProxyAggregator(ProxyAggregator.java:49)
at ch.lambdaj.Lambda.aggregateFrom(Lambda.java:573)
at ch.lambdaj.Lambda.aggregateFrom(Lambda.java:556)
at ch.lambdaj.Lambda.joinFrom(Lambda.java:902)我的代码是从lambdaj-2.4.jar调用joinFrom。看起来jar不在类路径中。
但我检查了tomcat,jar在/opt/apache-tomcat-7.0.42/webapps/ROOT/WEB-INF/lib文件夹下。我尝试设置JMX来监视这个tomcat服务器。那么,有什么方法可以确认这个jar已经加载到服务器中了吗?我在MBenas上搜索了一下,但没找到。

发布于 2015-10-01 12:19:51
您是否使用maven或其他解决方案进行依赖管理?如果没有,你应该尝试使用它,因为在你的例子中,lambdaj库有它自己的依赖项。以maven repo为例。它依赖于Objenesis库和更多的库。如果你想使用LambdaJ,你也必须提供它们。而没有找到的类来自Objenesis库。
您可以使用一些非特定于服务器的工具来获取所有由类加载的内容,例如jmap
jmap -histo <PID>来获取所有已加载类的列表,或者您可以尝试使用jvisualvm。
https://stackoverflow.com/questions/32878927
复制相似问题