org.springframework.webflow.util.RandomGuid上的java.lang.NoClassDefFoundError错误

Céd*_*ard 7 java linux tomcat centos5 classpath

对不起,我的问题很愚蠢,但作为一个java文盲,我无法回答它.我在CentOS5上运行一个tomcat(5)(用于CAS服务器),当我尝试打开这个URL时http://192.168.1.17:8080/cas-server-webapp-3.3.1/login我收到此错误:

第一个错误:java.lang.NoClassDefFoundError:无法初始化类org.springframework.webflow.util.RandomGuid

和root错误:org.springframework.web.util.NestedServletException:处理程序处理失败; 嵌套异常是java.lang.NoClassDefFoundError:无法初始化类org.springframework.webflow.util.RandomGuid

$ CLASSPATH是空的,这似乎是一个问题,但我不知道该放入什么.

编辑:Jared是对的,我的主机文件将127.0.0.1定义为localhost,现在它工作得很好!

Jar*_*red 25

在这种情况下,重要的是要保持两到三个不同的例外:

  1. java.lang.ClassNotFoundException 此异常表示在类路径中找不到该类.这表明我们正在尝试加载类定义,并且类在路径上不存在.

  2. java.lang.NoClassDefFoundError 此异常表示JVM在其内部类定义数据结构中查找了类的定义但未找到它.这与说它无法从类路径加载不同.通常这表明我们之前尝试从类路径加载一个类,但由于某种原因它失败了 - 现在我们再次尝试,但我们甚至都不会尝试加载它,因为我们之前没有加载它.较早的失败可能是ClassNotFoundException或ExceptionInInitializerError(表示静态初始化块中的失败)或任何其他问题.关键是,NoClassDefFoundError不一定是类路径问题.

话虽这么说,另一个回答海报表明RandomGUID需要调用InetAddress.getLocalHost().在许多操作系统上,这将触发将使用hosts文件的主机查找(/etc/hosts在*NIX系统上,%WINDOWS%/system32/drivers/etc/HOSTS在Windows系统上).

当该文件错误地定义localhost地址时,我经常看到类似的错误. 127.0.0.1应该指出的"localhost"(可能也是localhost.localdomain.)应该不是指向机器的实际主机名(尽管因为某些原因,许多老RedHat Linux上安装喜欢正确设置它.)