java.lang.Ошибка NoClassDefFoundError: исключение net / sf / hibernate / HibernateException

#hibernate #jsf

#переход в спящий режим #jsf

Вопрос:

Я разрабатываю веб-приложение JSF с использованием Hibernate. Я тестировал с основным классом, и я могу вставить в базу данных, но я не могу развернуть свое веб-приложение в Glassfish. Это всегда приводит к ошибке HTTP 500. Вот мой код:

faces-config :

 <?xml version="1.0" encoding="UTF-8"?>
<faces-config version="1.2" xmlns="http://java.sun.com/xml/ns/javaee"
 xmlns:xi="http://www.w3.org/2001/XInclude"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_1_2.xsd">
 <application>
        <view-handler>com.sun.facelets.FaceletViewHandler</view-handler>
    </application>

 <managed-bean>
  <managed-bean-name>timesheetBean</managed-bean-name>
  <managed-bean-class>hibernate.timeBean.TimesheetBean</managed-bean-class>
  <managed-bean-scope>session</managed-bean-scope>
 </managed-bean>
 <navigation-rule>
  <from-view-id>/EditTimesheet.jsp</from-view-id>
 </navigation-rule>
</faces-config>
  

web.xml :

 <?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
  <display-name>test</display-name>

  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>default.html</welcome-file>
    <welcome-file>default.htm</welcome-file>
    <welcome-file>default.jsp</welcome-file>
  </welcome-file-list>
  <context-param>
        <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
        <param-value>client</param-value>
    </context-param>

    <filter>
        <display-name>RichFaces Filter</display-name>
        <filter-name>richfaces</filter-name>
        <filter-class>org.ajax4jsf.Filter</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>richfaces</filter-name>
        <servlet-name>Faces Servlet</servlet-name>
        <dispatcher>REQUEST</dispatcher>
        <dispatcher>FORWARD</dispatcher>
        <dispatcher>INCLUDE</dispatcher>
    </filter-mapping>


    <context-param>
        <param-name>org.ajax4jsf.VIEW_HANDLERS</param-name>
        <param-value>com.sun.facelets.FaceletViewHandler</param-value>
    </context-param>
    <context-param>
        <param-name>javax.faces.DEFAULT_SUFFIX</param-name>
        <param-value>.xhtml</param-value>
    </context-param>

    <servlet>
        <servlet-name>Faces Servlet</servlet-name>
        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>

    <servlet-mapping>
        <servlet-name>Faces Servlet</servlet-name>
        <url-pattern>*.jsf</url-pattern>
    </servlet-mapping>
    <session-config>
        <session-timeout>30</session-timeout>
    </session-config>
    <welcome-file-list>
        <welcome-file>index.jsp</welcome-file>
    </welcome-file-list>
</web-app>
  

EditTimesheet.jsp :

 <%@ page language="java" pageEncoding="ISO-8859-1"%>
<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>

<%
String path = request.getContextPath();
String basePath = request.getScheme() "://" request.getServerName() ":" request.getServerPort() path "/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
    <base href="<%=basePath%>">

    <title>My JSF 'EditDepartement.jsp' starting page</title>

    <meta http-equiv="pragma" content="no-cache">
    <meta http-equiv="cache-control" content="no-cache">
    <meta http-equiv="expires" content="0">    
    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
    <meta http-equiv="description" content="This is my page">
    <!--
    <link rel="stylesheet" type="text/css" href="styles.css">
    -->

</head>

<body>
    <f:view>
        <h:form>
        <h:inputHidden id="id" value="#{timesheetBean.currentTimesheet.id}" />
        <h:panelGrid columns="2" border="1">
            <h:inputText value="#{timesheetBean.currentTimesheet.action}">
            </h:inputText>
            <h:outputText value="heure:" />
            <h:inputText value="#{timesheetBean.currentTimesheet.heure}">
            </h:inputText>
            <h:outputText value="date:" />
            <h:inputText value="#{timesheetBean.currentTimesheet.date}">
            </h:inputText>

</h:panelGrid>
        <h:commandButton value="Save" action="listeDepartements" actionListener="#{timesheetBean.saveTimesheet}" />
        <h:commandButton value="Annuler" action="listeTimesheet"/>
    </h:form>
    </f:view>
</body>
</html>
  

Выполнение является:

 javax.servlet.ServletException: net/sf/hibernate/HibernateException

 root cause: java.lang.NoClassDefFoundError: net/sf/hibernate/HibernateException
  

Чем это вызвано и как я могу это решить?

Ответ №1:

Похоже, что вы используете Hibernate, но у вас нет jar-файла Hibernate и зависимостей, встроенных в ваш war. Убедитесь, что все необходимые вам зависимости встроены в каталог WEB-INF / lib внутри вашего war.

Процесс для этого будет зависеть от того, как вы создаете свое веб-приложение.

Комментарии:

1. это мое исключение:.JasperException: /test.jsp(5,57) PWC6188: абсолютный uri: richfaces.org/rich не может быть разрешен ни в web.xml или файлы jar, развернутые с помощью этого приложения

2. это новая проблема после того, как вы устранили исключение hibernate? Если это так (и этот ответ помог вам разрешить исключение Hibernate), не могли бы вы, пожалуйста, пометить этот ответ как принятый, чтобы будущие пользователи, ищущие это исключение, могли его найти. Затем вы можете опубликовать свою новую проблему в новом вопросе — таким образом, сайт обеспечивает соответствие заголовка конкретным проблемам.