如何验证Tomcat服务器中部署的一个java框架?

时间:2015-10-01 03:23:19

标签: java tomcat

我在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搜索,但没有运气。 enter image description here

1 个答案:

答案 0 :(得分:0)

您是否使用maven或其他解决方案进行依赖关系管理?如果不是,您应该尝试使用它,因为在您的情况下,lambdaj库具有它自己的依赖项。例如,查看maven repo。这取决于Objenesis库和一些更多的库。如果你想使用LambdaJ,你也必须提供它们。而这个没有找到的班级来自Objenesis图书馆。

<强>更新 您可以使用一些非服务器特定的工具来获取JVM类的所有内容,例如jmap

jmap -histo <PID>

要获取所有已加载类的列表,或者可以尝试使用jvisualvm。