2016-05-08 32 views
0

助けてください。 psvmクラスでセッションを実行するとセッションが完璧に動作します。しかし、それがtomcatで実行されるとき:tomcatはこの例外を表示します。NoClassDefFoundError:クラスを初期化できませんでした.... utils.HibernateSessionFactory

Tomcat例外:ハンドラの処理に失敗しました。ネストされた例外がjava.lang.NoClassDefFoundErrorがある:クラスru.haki.utils.HibernateSessionFactory

のpom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 
    <groupId>Haki</groupId> 
    <artifactId>CRUD</artifactId> 
    <packaging>war</packaging> 
    <version>1.0-SNAPSHOT</version> 
    <name>CRUD Maven Webapp</name> 
    <url>http://maven.apache.org</url> 

    <properties> 
    <hibernate-version>5.1.0.Final</hibernate-version> 
    <spring-version>4.2.6.RELEASE</spring-version> 
    </properties> 

    <dependencies> 
    <dependency> 
     <groupId>org.hibernate</groupId> 
     <artifactId>hibernate-core</artifactId> 
     <version>${hibernate-version}</version> 
    </dependency> 

    <dependency> 
     <groupId>org.hibernate</groupId> 
     <artifactId>hibernate-commons-annotations</artifactId> 
     <version>3.2.0.Final</version> 
    </dependency> 

    <dependency> 
     <groupId>org.hibernate</groupId> 
     <artifactId>hibernate-entitymanager</artifactId> 
     <version>${hibernate-version}</version> 
    </dependency> 
    <dependency> 
     <groupId>org.hibernate</groupId> 
     <artifactId>hibernate-osgi</artifactId> 
     <version>${hibernate-version}</version> 
    </dependency> 
    <dependency> 
     <groupId>org.hibernate</groupId> 
     <artifactId>hibernate-envers</artifactId> 
     <version>${hibernate-version}</version> 
    </dependency> 
    <dependency> 
     <groupId>org.hibernate</groupId> 
     <artifactId>hibernate-c3p0</artifactId> 
     <version>${hibernate-version}</version> 
    </dependency> 
    <dependency> 
     <groupId>org.hibernate</groupId> 
     <artifactId>hibernate-proxool</artifactId> 
     <version>${hibernate-version}</version> 
    </dependency> 
    <dependency> 
     <groupId>org.hibernate</groupId> 
     <artifactId>hibernate-infinispan</artifactId> 
     <version>${hibernate-version}</version> 
    </dependency> 
    <dependency> 
     <groupId>org.hibernate</groupId> 
     <artifactId>hibernate-ehcache</artifactId> 
     <version>${hibernate-version}</version> 
    </dependency> 

    <!--driver for connection to MySQL--> 
    <dependency> 
     <groupId>mysql</groupId> 
     <artifactId>mysql-connector-java</artifactId> 
     <version>5.1.34</version> 
    </dependency> 

    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-core</artifactId> 
     <version>${spring-version}</version> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-web</artifactId> 
     <version>${spring-version}</version> 
    </dependency> 

    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-webmvc</artifactId> 
     <version>${spring-version}</version> 
    </dependency> 

    <dependency> 
     <groupId>jstl</groupId> 
     <artifactId>jstl</artifactId> 
     <version>1.2</version> 
    </dependency> 


    </dependencies> 

    <build> 
    <finalName>CRUD</finalName> 
    <plugins> 

     <plugin> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-compiler-plugin</artifactId> 
     <version>3.5.1</version> 
     <configuration> 
      <source>1.8</source> 
      <target>1.8</target> 
      <encoding>UTF-8</encoding> 
     </configuration> 
     </plugin> 

     <plugin> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-war-plugin</artifactId> 
     <version>2.6</version> 
     <configuration> 
      <failOnMissingWebXml>false</failOnMissingWebXml> 
     </configuration> 
     </plugin> 
    </plugins> 
    </build> 
</project> 

hibernate.cfg.xmlの

<?xml version='1.0' encoding='utf-8'?> 
<!DOCTYPE hibernate-configuration PUBLIC 
    "-//Hibernate/Hibernate Configuration DTD//EN" 
    "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd"> 
<hibernate-configuration> 
    <session-factory> 
    <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property> 
    <property name="connection.url">jdbc:mysql://localhost:3306/test</property> 
    <property name="connection.driver_class">com.mysql.jdbc.Driver</property> 

    <property name="connection.username">root</property> 
    <property name="connection.password">root</property> 
    <!--<property name="hibernate.current_session_context_class">thread</property>--> 

    <mapping class="ru.haki.domain.User"/> 

    <!-- DB schema will be updated if needed --> 
    <!-- <property name="hbm2ddl.auto">update</property> --> 
    </session-factory> 
</hibernate-configuration> 

を初期化できませんでしたHibernateSessionFactory

package ru.haki.utils; 

import org.hibernate.Session; 
import org.hibernate.SessionFactory; 
import org.hibernate.boot.Metadata; 
import org.hibernate.boot.MetadataSources; 
import org.hibernate.boot.registry.StandardServiceRegistry; 
import org.hibernate.boot.registry.StandardServiceRegistryBuilder; 
import org.hibernate.cfg.Configuration; 

public class HibernateSessionFactory { 

    private static SessionFactory sessionFactory = buildSessionFactory(); 

    private static SessionFactory buildSessionFactory() { 
     final StandardServiceRegistry registry = new StandardServiceRegistryBuilder() 
       .configure() // configures settings from hibernate.cfg.xml 
       .build(); 
     try { 
      sessionFactory = new MetadataSources(registry).buildMetadata().buildSessionFactory(); 
     } 
     catch (Exception e) { 
      // The registry would be destroyed by the SessionFactory, but we had trouble building the SessionFactory 
      // so destroy it manually. 
      StandardServiceRegistryBuilder.destroy(registry); 
     } 
     return sessionFactory; 
    } 

    public static Session getSession() { 
     return sessionFactory.openSession(); 
    } 

    public static SessionFactory getSessionFactory() { 
     return sessionFactory; 
    } 

    public static void closeSession(Session session) { 
     if (session != null) { 
      session.flush(); 
      session.close(); 
     } 
    } 
} 

ユーザー

package ru.haki.domain; 

//import org.hibernate.annotations.CreationTimestamp; 

import javax.persistence.*; 
import java.util.Date; 

@Entity 
@Table(name = "user", schema = "", catalog = "test") 
public class User { 
    private int id; 
    private String name; 
    private Integer age; 
    private boolean isAdmin; 
    private Date createdDate; 

    public User() { 
     this.createdDate = new Date(); 
    } 

    public User(String name, Integer age, boolean isAdmin) { 
     this.name = name; 
     this.age = age; 
     this.isAdmin = isAdmin; 
     this.createdDate = new Date(); 
    } 

    @Id 
    @Column(name = "id", nullable = false, insertable = true, updatable = true) 
    public int getId() { 
     return id; 
    } 

    public void setId(int id) { 
     this.id = id; 
    } 

    @Basic 
    @Column(name = "name", nullable = false, insertable = true, updatable = true, length = 25) 
    public String getName() { 
     return name; 
    } 

    public void setName(String name) { 
     this.name = name; 
    } 

    @Basic 
    @Column(name = "age", nullable = true, insertable = true, updatable = true) 
    public Integer getAge() { 
     return age; 
    } 

    public void setAge(Integer age) { 
     this.age = age; 
    } 

    @Basic 
    @Column(name = "isAdmin", nullable = false, insertable = true, updatable = true) 
    public boolean isAdmin() { 
     return isAdmin; 
    } 

    public void setAdmin(boolean admin) { 
     isAdmin = admin; 
    } 


    @Temporal(TemporalType.TIMESTAMP) 
    @Column(name = "createdDate", nullable = false) 
    public java.util.Date getCreatedDate() { 
     return createdDate; 
    } 

    public void setCreatedDate(Date createdDate) { 
     this.createdDate = createdDate; 
    } 

    @Override 
    public boolean equals(Object o) { 
     if (this == o) return true; 
     if (o == null || getClass() != o.getClass()) return false; 

     User user = (User) o; 

     if (id != user.id) return false; 
     if (isAdmin != user.isAdmin) return false; 
     if (name != null ? !name.equals(user.name) : user.name != null) return false; 
     if (age != null ? !age.equals(user.age) : user.age != null) return false; 
     if (createdDate != null ? !createdDate.equals(user.createdDate) : user.createdDate != null) return false; 

     return true; 
    } 

    @Override 
    public int hashCode() { 
     int result = id; 
     result = 31 * result + (name != null ? name.hashCode() : 0); 
     result = 31 * result + (age != null ? age.hashCode() : 0); 
     result = 31 * result + (isAdmin ? 1 : 0); 
     result = 31 * result + (createdDate != null ? createdDate.hashCode() : 0); 
     return result; 
    } 

    @Override 
    public String toString() { 
     return "User{" + 
       "id=" + id + 
       ", name='" + name + '\'' + 
       ", age=" + age + 
       ", isAdmin=" + isAdmin + 
       ", createdDate=" + createdDate + 
       '}'; 
    } 
} 
+0

このアプリケーションをtomcatにどのようにインストールしましたか?戦争の崩壊のように見えます。 – Andremoniy

答えて

0

コアに含まれているため、Hibernate Annotations依存関係を削除して解決しました。

0

あなたにも、Tomcatのライブラリ内の休止状態のjarファイルを含める必要があります。 NoClassDefFoundErrorは、ほとんどの場合、jarファイルが見つからない場合に発生します。

+0

あなたがpomファイルを見ている場合、それはハイバネート依存関係を持っています –

関連する問題