由于此NoClassDefFound错误,我无法加载Web应用程序的任何页面(本地在Tomcat 7.0.2.6上)。我竭尽全力试图找出原因,这就是我所知道的:

我的同事已使该项目成功在本地(在Tomcat上)和开发服务器(WebLogic)上运行。

我从svn做了一个新的下拉列表,所以我的代码和他的完全一样。我已经验证了我具有对Aspose的共享库引用(并且所需的.jars位于其中),并且weblogic.xml中有一个条目。

最初在WebLogic上部署时,我们看到了相同的错误,因为Aspose库的命名不正确,但是在他的Tomcat服务器上本地运行良好。

我尝试清理并重建项目没有任何效果。

据我所知,它要么是Tomcat问题,要么可能是Eclipse设置。

有没有人遇到过类似的情况?关于尝试解决此问题的任何想法?

最佳答案

您需要做的第一件事是确定您是否正在与另一个具有相同名称和包的类进行碰撞。最简单的方法是使用cygwin / linux控制台,将此shell脚本保存到一个文件中,例如findjar

find "$1" -name "*.jar" -exec sh -c 'jar -tf {}|grep -H --label {} '$2'' \;


将其放在您的路径中,并导航到服务器实例的根目录,然后像这样运行脚本

findjar . yourclass


注意期间,不要忘记它。如果您的项目中有多个具有相同名称的类,则将返回此值。

一旦确定项目是干净的并且该类只有一个副本,我将尝试将您的共享库文件夹实际添加到Websphere服务器实例JVM参数。要做到这一点:


进入管理员,点击服务器
打开服务器类型,单击Websphere应用程序服务器
您应该在此处看到您的服务器,单击它
在右侧,您将看到“服务器基础结构”部分,下面是“ Java和流程管理”子部分。
打开该部分,然后单击“流程定义”
在流程定义屏幕上,是右手另一列。点击“ Java虚拟机”
是的,最后我们在正确的屏幕上,我保证这里会尽头
在虚拟机页面上,有一个标记为“ Classpath”的大文本字段,您需要输入共享库文件夹的完整路径。


这样做很奇怪,没有任何意义,但是过去我不得不这样做,以使我的代码能够查看共享资源中的属性文件。

关于java - 无法找出NoClassDefFoundError的原因:aspose/pdf/Paragraph,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14900263/

10-10 04:24