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

标签 java linux tomcat classpath centos5

对不起,我的问题很愚蠢,但作为一个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 定义为本地主机,现在它工作得很好!

最佳答案

在这种情况下,重要的是在我们的头脑中保留两个或三个不同的异常:

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

  2. 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/

相关文章:

linux - rabbitmq集群主机名不匹配问题

linux - 如何将linux命令重写为CMD语法

java - tomcat 8 中 java.awt.Rectangle 的 NoClassDefFoundError

java - Tomcat 7 中的内存泄漏 Grails 应用程序

java - 无法向覆盖的方法添加 throws 子句导致我必须返回 null

java - Java中的SCTP一对多

Java替换字符串html img标签

java - 通过 Spring 将字段注入(inject) Hibernate 加载的实体中

java - 如何在不使用 IDE 的情况下在 Linux 中创建类和接口(interface)

java - Tomcat - 多个 webapps 文件夹