2011-11-14 28 views
1

我試圖運行Tomcat應用程序,但是當我嘗試去申請,我得到:NoClassDefFoundError的:我怎樣才能確定哪些類定義未找到

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顯示我們進入類中的第二個方法,所以我認爲該類已經初始化。當然,這不是無法找到定義的類,因爲我們在堆棧跟蹤中有行號信息。

這是觸發錯誤的方法是這樣的:

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

有什麼建議?

+1

在這個特定的一個,應該有另一個根本原因進一步在堆棧跟蹤。如果有,發佈它(它包含答案)。如果沒有,那麼它可能是'ysl.util.Utils'類的靜態初始化中的一個錯誤,它會抑制異常的根本原因(重複檢查該類的所有「靜態」字段和塊)。 – BalusC

回答

0

最有可能的是,Utils類試圖使用靜態初始化期間不可用的另一個類(這將是@BalusC指出的根本原因)。加載該類的失敗會導致Utils失敗,因此即使定義了Utils,它的依賴關係也不會。

相關問題