有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java NoClassDefFoundError:如何确定找不到什么类定义

我正在尝试运行tomcat应用程序,但当我尝试转到该应用程序时,我得到:

java.lang.NoClassDefFoundError: Could not initialize class ysl.util.Utils ysl.util.Utils.executeQuery(Utils.java:186)
ysl.util.Utils.getProperty(Utils.java:395)
ysl.util.Utils.getProperty(Utils.java:383)
ysl.util.YslMachineProperties.init(YslMachineProperties.java:76)
ysl.util.YslMachineProperties.getTomcatImagesDirectory(YslMachineProperties.java:109)
org.apache.jsp.YSLLogin_jsp._jspService(YSLLogin_jsp.java:70)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:98) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:328)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:315)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:265)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)

我在网上找到了很多关于这个问题的参考资料——大多数人说,在编译应用程序时,有一个在运行时不可用的类,我需要在java类路径中添加一些东西来找到它。但我如何确定缺少什么类呢

错误消息说Utils类无法初始化,但是stacktrace显示我们进入了类中的第二个方法,因此我认为该类已经初始化。当然,这不是一个无法找到定义的类,因为我们在stacktrace中有行号信息

触发错误的方法如下所示:

static public ResultSet executeQuery(String queryString) throws SQLException {
return dbConnPool.executeQuery(queryString);

有什么建议吗


共 (2) 个答案

  1. # 2 楼答案

    最有可能的是,Utils类正在尝试使用另一个在静态初始化期间不可用的类(这可能是@BalusC指出的根本原因)。加载该类的失败也会导致UTIL失败,因此即使定义了UTIL,其依赖项也没有定义