这是一个荒谬的场景,因为我完全无能为什么会发生这种情况。
我创建了一个Java servlet,(maven)打包为战争,部署在Tomcat server
上。它在2台测试机器上工作正常(相信我),但是当它在另一台机器上移动时,该api的任何命中都会为特定的类提供NoClassDefFoundError
。
我已经检查了webapps
文件夹中的解压缩项目目录,它包含该类。
这可能是什么原因?我已经检查了所有我能做到但没有线索的地方。我知道自己这个问题不是很明确,但这就是我的全部。
如果需要,任何其他细节都会在评论中提出。
编辑:(另外一个细节)
在这台新机器中升级了Tomcat
版本...以前的机器有Apache Tomcat/7.0.59
。这有Apache Tomcat/8.0.33
。这可能是问题吗?
编辑:
我仍然不确定这个问题。在尝试查找该问题数小时后,我重新配置了该计算机...重新安装了jdk
和Tomcat
并在此部署并运行。
答案 0 :(得分:1)
我的猜测是所有类都存在,但是在war文件的某个地方,有一个类使用另一个类,它位于本机工作机器的classpath
中,而不是另一个类。 NoClassDefinition
与ClassNotFound
不同,因此该类可能存在(不应该丢失)。不幸的是,听起来有一个依赖不在本机war文件中,但仍然运行和编译,因为它位于本机classpath
。
检查您的.bash_profile
或导出类路径的位置,您可能会找到一些需要放入WAR的JAR文件。