由于NoClassDefFound错误,我无法加载我的webapp的任何页面(本地在Tomcat 7.0.2.6上)。我最终想知道原因是什么,这就是我所知道的:
我的同事已成功在本地(在Tomcat上)和我们的开发服务器(WebLogic)上运行此项目。
我从svn做了一个新的下拉,所以我的代码和他的代码完全相同。我已经验证了我对Aspose的共享库引用(以及所需的.jars都在那里),并且weblogic.xml有一个条目。
我们在最初部署在WebLogic上时看到了同样的错误,因为Aspose库的名称不正确,但它在Tomcat服务器上本地运行正常。
我试图清理和重建项目无效。
尽我所知,它必须是Tomcat问题,或者可能是Eclipse设置。
有没有人遇到过类似的情况?关于如何解决这个问题的任何想法?
答案 0 :(得分:1)
您需要做的第一件事是确定您是否与具有相同名称和包的另一个类发生冲突。最简单的方法是使用cygwin / linux控制台,将此shell脚本保存到文件中,例如findjar
find "$1" -name "*.jar" -exec sh -c 'jar -tf {}|grep -H --label {} '$2'' \;
将它放在您的路径中并导航到服务器实例的根目录并像这样运行脚本
findjar . yourclass
注意这个时期,别忘了。如果项目中有多个具有相同名称的类,则会返回。
一旦你确定项目是干净的并且只有一个类的副本,我会尝试将你的共享库文件夹添加到websphere服务器实例JVM参数中。做到这一点:
它很奇怪并且没有必要这样做,但我必须在过去这样做,以允许我的代码在共享资源中查看属性文件。
答案 1 :(得分:0)
您的同事可能已在其Tomcat实例中安装了Java库。
在Tomcat目录中查看一些lib文件夹(我无法记住确切的位置,我认为它会根据版本进行更改)但类似于$ {CATALINE_HOME} / common / lib
验证他的tomcat安装中没有不同的JAR文件。
从这个问题:Does Tomcat load the same library file into memory twice if they are in two web apps? 它们显然存储在这里:
Tomcat 6 $CATALINA_HOME/lib
Tomcat 5 $CATALINA_HOME/common/lib