对不起,我的问题很愚蠢,但作为一个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
和根错误: org.springframework.web.util.NestedServletException:处理程序处理失败;嵌套异常是 java.lang.NoClassDefFoundError: Could not initialize class org.springframework.webflow.util.RandomGuid
$CLASSPATH是空的,貌似是个问题,不知道往里面放什么
编辑:Jared 是对的,我的主机文件将 127.0.0.1 定义为本地主机,现在它工作得很好!
最佳答案
在这种情况下,重要的是在我们的头脑中保留两个或三个不同的异常:
java.lang.ClassNotFoundException
此异常表示在类路径中找不到该类。这表明我们正在尝试加载类定义,而类路径中不存在该类。java.lang.NoClassDefFoundError
此异常表明 JVM 在其内部类定义数据结构中查找类的定义但未找到它.这不同于说它不能从类路径加载。通常这表明我们之前尝试从类路径加载一个类,但由于某种原因失败了 - 现在我们再次尝试,但我们甚至不打算尝试加载它,因为我们之前加载它失败了。较早的失败可能是 ClassNotFoundException 或 ExceptionInInitializerError(表示静态初始化 block 中的失败)或任何数量的其他问题。重点是,NoClassDefFoundError 不一定是类路径问题。
话虽这么说,另一个答案海报表明 RandomGUID 需要调用 InetAddress.getLocalHost()。在许多操作系统上,这将触发主机查找,该主机查找将使用主机文件(/etc/hosts
在 *NIX 系统上,%WINDOWS%/system32/drivers/etc/HOSTS
在 Windows 系统上。)
当该文件错误地定义本地主机地址时,我经常看到类似的错误。 127.0.0.1
应该指向“localhost”(可能还有 localhost.localdomain
)。它应该不指向机器(尽管出于某种原因,许多较旧的 RedHat Linux 安装程序喜欢错误地设置它。)
关于java - org.springframework.webflow.util.RandomGuid 上的错误 java.lang.NoClassDefFoundError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/375332/