对不起,我的问题很愚蠢,但作为一个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,现在它工作得很好!
在这种情况下,重要的是要保持两到三个不同的例外:
java.lang.ClassNotFoundException
此异常表示在类路径中找不到该类.这表明我们正在尝试加载类定义,并且类在路径上不存在.
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上安装喜欢正确设置它.)