簡體   English   中英

NoClassDefFoundError

[英]NoClassDefFoundError

我正在使用休眠模式,在使用休眠連接時,出現如下錯誤

java.lang.NoClassDefFoundError: Could not initialize class org.hibernate.cfg.Configuration
at com.ensarm.niidle.server.SchemaManager.getDatabaseSession(SchemaManager.java:60)
at com.ensarm.niidle.server.helper.UserServiceHelper.createNiidleUser(UserServiceHelper.java:27)
at com.ensarm.niidle.server.UserSignUpServlet.doPost(UserSignUpServlet.java:75)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:487)
at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:362)
at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:181)
at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:729)
at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:405)
at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
at org.mortbay.jetty.handler.RequestLogHandler.handle(RequestLogHandler.java:49)
at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
at org.mortbay.jetty.Server.handle(Server.java:324)
at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:505)
at org.mortbay.jetty.HttpConnection$RequestHandler.content(HttpConnection.java:843)
at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:647)
at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:211)
at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:380)
at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:395)
at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:488)

請幫助我解決此問題,我已經在Web應用程序的lib文件夾中添加了所有必需的休眠jar文件。

現在我該怎么辦?

我懷疑您缺少log4j jar或commons-logging.jar。

消息Could not initialize class org.hibernate.cfg.Configuration表示JVM已經嘗試並且無法初始化類org.hibernate.cfg.Configuration 該類源代碼包含以下行:

private static Log log = LogFactory.getLog( Configuration.class );

由於此字段被標記為static ,因此在初始化類后會設置該字段的值。 該字段是此類的唯一靜態成員,因此,如果JVM無法初始化此類,則此字段一定存在問題。

java.lang.NoClassDefFoundError是一個棘手的異常。 這不一定表示該班級不存在。 相反,它被拋出來表明在初次初始化該類時出現了一些問題。

當首次訪問此類時遇到此問題(並且在這里報告了根本問題)時,這尤其麻煩,但是對此類的后續訪問只會吐出可怕的java.lang.NoClassDefFoundError而沒有任何對原始問題的引用。

在這種情況下,您的配置可能包含錯誤,或者可能完全丟失?

阿爾揚說了什么。 您遇到的錯誤並不表示找不到cfg.Configuration。 它只是說在cfg.Configuration初始化的某個地方,找不到類定義。 您的日志中還有其他例外嗎?

在我看來這是類cfg.Configuration依賴於應用程序的WEB-INF / lib目錄中缺少的類。

在Spring論壇中看看這個線程,他們似乎在談論您遇到的問題:

http://forum.springsource.org/showthread.php?t=65296

特別值得一提的是,其中一位資深成員發表的帖子中提到了另外四個遺漏的jar(請注意,這是在2008年,我不知道您使用的冬眠和春季版本):

http://forum.springsource.org/showpost.php?s=f3b5de4e9df29e65d4c9a​​caafc1676c8&p=219678&postcount=10

希望能幫助到你。

正如Luke Woodward所指出的那樣,我只是在使用Hibernate 3.5.4('java.lang.NoClassDefFoundError:無法初始化org.hibernate.cfg.AnnotationConfiguration')時收到了非常類似的異常消息,它與日志記錄有關。 因此,我想您會丟失一個具有相應依賴項的slf4j實現。

luis.espinal提供的鏈接( http://forum.springsource.org/showpost.php?s=f3b5de4e9df29e65d4c9a​​caafc1676c8&p=219678&postcount=10 )指出您可能缺少的JAR。 其中是slf4j-log4j12-1.5.0.jar。

最重要的是,在線hibernate文檔的“第一個Hibernate應用程序”教程中的pom.xml包含對slf4j實現的明確引用:

http://docs.jboss.org/hibernate/core/3.6/reference/zh-CN/html/tutorial.html#tutorial-firstapp-setup

我正在使用Ant Maven任務,並且我的問題已解決,將依賴項添加到slf4j-log4j12。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM