2016-07-26 6 views
0

私は常に次の例外を受け取り、ここで考えられるすべての可能性を試してみました。spring mvc、maven、hibernate java.lang.ClassNotFoundException:com.entity.Candidate

SEVERE: Exception sending context initialized event to listener instance of class org.springframework.web.context.ContextLoaderListener 
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'transactionManager' defined in ServletContext resource [/WEB-INF/conceptedge-persistence.xml]: Cannot resolve reference to bean 'sessionFactory' while setting bean property 'sessionFactory'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFactory' defined in ServletContext resource [/WEB-INF/conceptedge-persistence.xml]: Error converting typed String value for bean property 'annotatedClasses' with key [0]; nested exception is org.springframework.beans.TypeMismatchException: Failed to convert value of type 'java.lang.String' to required type 'java.lang.Class'; nested exception is java.lang.IllegalArgumentException: Cannot find class [com.entity.Candidate] 

のweb.xml

<?xml version="1.0" encoding="UTF-8"?> 

<web-app version="3.0" 
     xmlns="http://java.sun.com/xml/ns/javaee" 
     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-app_3_0.xsd" 
     metadata-complete="false"> 


     <servlet> 
      <servlet-name>conceptedge</servlet-name> 
      <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
      <load-on-startup>1</load-on-startup> 
     </servlet> 

     <listener> 
      <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> 
     </listener> 

     <context-param> 
      <param-name>contextConfigLocation</param-name> 
      <param-value>/WEB-INF/conceptedge-persistence.xml</param-value> 
     </context-param> 

     <servlet-mapping> 
      <servlet-name>conceptedge</servlet-name> 
      <url-pattern>/</url-pattern> 
     </servlet-mapping> 

</web-app> 

-servlet.xml

<?xml version="1.0" encoding="UTF-8"?> 
<beans xmlns="http://www.springframework.org/schema/beans" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" 
    xmlns:mvc="http://www.springframework.org/schema/mvc" 
    xsi:schemaLocation="http://www.springframework.org/schema/mvc 
http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd 
http://www.springframework.org/schema/beans 
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd 
http://www.springframework.org/schema/context 
http://www.springframework.org/schema/context/spring-context-3.0.xsd"> 

    <context:component-scan base-package="com.entity.Candidate" > 
     <context:include-filter type="regex" expression="com.entity.Candidate"/> 
    </context:component-scan> 
    <mvc:annotation-driven /> 

    <bean 
     class="org.springframework.web.servlet.view.InternalResourceViewResolver"> 
     <property name="prefix" value="/WEB-INF/views/" /> 
     <property name="suffix" value=".jsp" /> 
    </bean> 
</beans> 

-persistence.xml

<?xml version="1.0" encoding="UTF-8"?> 
<beans xmlns="http://www.springframework.org/schema/beans" 
    xmlns:tx="http://www.springframework.org/schema/tx" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://www.springframework.org/schema/beans  
    http://www.springframework.org/schema/beans/spring-beans-3.0.xsd 
    http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd"> 

    <tx:annotation-driven transaction-manager="transactionManager"/> 

    <bean id="transactionManager" class="org.springframework.orm.hibernate4.HibernateTransactionManager"> 
     <property name="sessionFactory" ref="sessionFactory"/> 
    </bean> 

<!-- <bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean"> --> 
<!--   <property name="dataSource" ref="dataSource"></property> --> 
<!--   <property name="configLocation" value="/WEB-INF/hibernate.cfg.xml"></property> --> 
<!-- </bean> --> 
    <bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean"> 
     <!-- class="org.springframework.orm.hibernate4.LocalSessionFactoryBean" --> 
     <property name="dataSource" ref="dataSource" /> 

     <property name="annotatedClasses"> 
     <list> 
      <value type="java.lang.Class">com.entity.Candidate</value> 
     </list> 
     </property> 
     <property name="hibernateProperties"> 
      <props> 
       <prop key="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</prop> 
       <prop key="hibernate.show_sql">true</prop> 
       <prop key="hibernate.hbm2ddl.auto">update</prop> 
       <prop key="javax.persistence.validation.mode">none</prop> 
      </props> 
     </property> 
    </bean> 
    <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> 
     <property name="driverClassName" value="com.mysql.jdbc.Driver"></property> 
     <property name="url" value="jdbc:mysql://localhost:3306/interview"></property> 
     <property name="username" value="root"></property> 
     <property name="password" value="root"></property> 
    </bean> 

    </beans> 

コントローラクラス

package com.controller; 

import java.util.List; 

import org.springframework.beans.factory.annotation.Autowired; 
import org.springframework.stereotype.Controller; 
import org.springframework.ui.ModelMap; 
import org.springframework.web.bind.annotation.RequestMapping; 
import org.springframework.web.bind.annotation.RequestMethod; 

import com.entity.Candidate; 
import com.service.ConceptEdgeServices; 

@Controller 
public class ConceptEdge { 

    @Autowired 
    ConceptEdgeServices services; 

    @RequestMapping(value="/hi", method=RequestMethod.GET) 
    public String displayHello(ModelMap model){ 

     List<Candidate> candidatesList = services.getCandidatesList(); 
     model.put("candidateslist", candidatesList); 
     return "hi"; 
    } 

    @RequestMapping(method=RequestMethod.GET) 
    public String welcome(){ 
     return "hello"; 
    } 

} 

daoimpl.java

package com.daoimpl; 

import java.util.List; 

import org.hibernate.Criteria; 
import org.hibernate.Session; 
import org.hibernate.SessionFactory; 
import org.springframework.beans.factory.annotation.Autowired; 
import org.springframework.stereotype.Repository; 
import org.springframework.transaction.annotation.Transactional; 

import com.dao.ConceptEdgeDao; 
import com.entity.Candidate; 

@Repository 
@Transactional 
public class ConceptEdgeDaoImpl implements ConceptEdgeDao{ 

    @Autowired 
    SessionFactory sessionFactory; 

    @Override 
    public List<Candidate> getCandidatesList() { 
     // TODO Auto-generated method stub 
     Session session = sessionFactory.getCurrentSession(); 
     Criteria criteria = session.createCriteria(Candidate.class); 
     return criteria.list(); 
    } 

} 

file structure followed:

常に、次のエラーが発生:にjava.lang.ClassNotFoundException:

によって引き起こさcom.entity.Candidate

through Hibernat適切な列名とデータ型を持つCandidateという名前のテーブルを作成できます。しかし、私がTomcat 7をロードしようとしているとき、私はこのエラーに直面しています。

pom.xml ここに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>conceptinfo</groupId> 
    <artifactId>conceptinfo</artifactId> 
    <packaging>war</packaging> 
    <version>1.0</version> 
    <name>conceptinfo</name> 
    <repositories> 
     <repository> 
      <id>eap</id> 
      <url>http://maven.repository.redhat.com/techpreview/all</url> 
      <releases> 
       <enabled>true</enabled> 
      </releases> 
      <snapshots> 
       <enabled>true</enabled> 
      </snapshots> 
     </repository> 
    </repositories> 
    <pluginRepositories> 
     <pluginRepository> 
      <id>eap</id> 
      <url>http://maven.repository.redhat.com/techpreview/all</url> 
      <releases> 
       <enabled>true</enabled> 
      </releases> 
      <snapshots> 
       <enabled>true</enabled> 
      </snapshots> 
     </pluginRepository> 
    </pluginRepositories> 
    <properties> 
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
     <maven.compiler.source>1.6</maven.compiler.source> 
     <maven.compiler.target>1.6</maven.compiler.target> 
    </properties> 
    <dependencies> 
     <dependency> 
      <groupId>mysql</groupId> 
      <artifactId>mysql-connector-java</artifactId> 
      <version>5.1.9</version> 
     </dependency>  
     <dependency> 
      <groupId>javax.servlet</groupId> 
      <artifactId>javax.servlet-api</artifactId> 
      <version>3.0.1</version> 
      <scope>provided</scope> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-core</artifactId> 
      <version>3.2.5.RELEASE</version> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-context</artifactId> 
      <version>3.2.5.RELEASE</version> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-context-support</artifactId> 
      <version>3.2.5.RELEASE</version> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-tx</artifactId> 
      <version>3.2.5.RELEASE</version> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-web</artifactId> 
      <version>3.2.5.RELEASE</version> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-webmvc</artifactId> 
      <version>3.2.5.RELEASE</version> 
     </dependency> 
     <dependency> 
      <groupId>junit</groupId> 
      <artifactId>junit</artifactId> 
      <version>4.11</version> 
     </dependency> 
     <dependency> 
      <groupId>org.hibernate</groupId> 
      <artifactId>hibernate-commons-annotations</artifactId> 
      <version>3.2.0.Final</version> 
     </dependency> 
     <dependency> 
      <groupId>javax.transaction</groupId> 
      <artifactId>jta</artifactId> 
      <version>1.1</version> 
     </dependency> 
     <dependency> 
      <groupId>jstl</groupId> 
      <artifactId>jstl</artifactId> 
      <version>1.2</version> 
     </dependency> 
     <dependency> 
      <groupId>antlr</groupId> 
      <artifactId>antlr</artifactId> 
      <version>2.7.7</version> 
     </dependency> 
     <dependency> 
      <groupId>org.hibernate</groupId> 
      <artifactId>hibernate-core</artifactId> 
      <version>4.0.1.Final</version> 
     </dependency> 
     <dependency> 
      <groupId>org.hibernate.javax.persistence</groupId> 
      <artifactId>hibernate-jpa-2.1-api</artifactId> 
      <version>1.0.0.Draft-16</version> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-orm</artifactId> 
      <version>3.2.5.RELEASE</version> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-beans</artifactId> 
      <version>3.2.5.RELEASE</version> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-jdbc</artifactId> 
      <version>3.2.5.RELEASE</version> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-expression</artifactId> 
      <version>3.2.5.RELEASE</version> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-aop</artifactId> 
      <version>3.2.5.RELEASE</version> 
     </dependency> 
     <dependency> 
      <groupId>commons-logging</groupId> 
      <artifactId>commons-logging</artifactId> 
      <version>1.1.1</version> 
     </dependency> 
     <dependency> 
      <groupId>dom4j</groupId> 
      <artifactId>dom4j</artifactId> 
      <version>1.6.1</version> 
     </dependency> 
     <dependency> 
      <groupId>log4j</groupId> 
      <artifactId>log4j</artifactId> 
      <version>1.2.17</version> 
     </dependency> 
     <dependency> 
      <groupId>org.slf4j</groupId> 
      <artifactId>slf4j-api</artifactId> 
      <version>1.6.1</version> 
     </dependency> 
     <dependency> 
      <groupId>cglib</groupId> 
      <artifactId>cglib</artifactId> 
      <version>2.1_3</version> 
     </dependency> 

     <dependency> 
      <groupId>javassist</groupId> 
      <artifactId>javassist</artifactId> 
      <version>3.12.1.GA</version> 
     </dependency> 
     <dependency> 
      <groupId>org.jboss.logging</groupId> 
      <artifactId>jboss-logging</artifactId> 
      <version>3.1.1.GA</version> 
     </dependency> 

     <dependency> 
      <groupId>commons-collections</groupId> 
      <artifactId>commons-collections</artifactId> 
      <version>2.1.1</version> 
     </dependency> 
     <dependency> 
      <groupId>commons-dbcp</groupId> 
      <artifactId>commons-dbcp</artifactId> 
      <version>1.4</version> 
     </dependency> 
     <dependency> 
      <groupId>commons-lang</groupId> 
      <artifactId>commons-lang</artifactId> 
      <version>2.5</version> 
     </dependency> 
     <dependency> 
      <groupId>taglibs</groupId> 
      <artifactId>standard</artifactId> 
      <version>1.1.2</version> 
     </dependency> 
    </dependencies> 
    <profiles> 
     <profile> 
      <id>openshift</id> 
      <build> 
       <finalName>conceptinfo</finalName> 
       <plugins> 
        <plugin> 
         <artifactId>maven-war-plugin</artifactId> 
         <version>2.1.1</version> 
         <configuration> 
          <outputDirectory>webapps</outputDirectory> 
          <warName>ROOT</warName> 
         </configuration> 
        </plugin> 
       </plugins> 
      </build> 
     </profile> 
    </profiles> 
</project> 

candidate.java

package com.entity; 

import javax.persistence.Entity; 
import javax.persistence.GeneratedValue; 
import javax.persistence.GenerationType; 
import javax.persistence.Id; 

import org.hibernate.annotations.GenericGenerator; 

@Entity 
public class Candidate { 

    @Id 
    @GeneratedValue(strategy=GenerationType.AUTO) 
    @GenericGenerator(name = "system-uuid", strategy = "uuid") 
    private int number; 
    private String name; 

    public int getNumber() { 
     return number; 
    } 
    public void setNumber(int number) { 
     this.number = number; 
    } 
    public String getName() { 
     return name; 
    } 
    public void setName(String name) { 
     this.name = name; 
    } 
} 
+0

pom.xmlを表示するか、永続性JarファイルをBuildPathに追加してください。 –

+0

"annotatedClasses 'with key [0];ネストされた例外はorg.springframework.beans.TypeMismatchExceptionです:型' java.lang.String 'の値を必要な型' java.lang.Class 'に変換できませんでした';"確かなヒントだった? –

+0

応募者クラスを投稿してください。 – mady

答えて

1
<list> 
    <value>com.entity.Candidate</value> 
</list> 

あなただけのタイプを削除することで試すことができます。あなたがクラスとしてそれを変換しようとしているところで、型が文字列として期待しているようです。

+0

を返信してくれてありがとう、ええ、私はタイプ= ""を与えずに試してみましたが、それでも同じエラーを投げています! この特定のエラーがなぜ起こっているのか理解できません。私に説明してください。 ---- "タイプ 'java.util.ArrayList'のプロパティ値を必須の型 'java.lang.Class []'のプロパティ 'annotatedClasses'に変換できませんでした。" –

+0

私はそれがうまくいくと思います。リンクをたどっても同じように言います。 http://stackoverflow.com/questions/4509743/class-not-found-exception、http://stackoverflow.com/questions/1532043/spring-a-bean-that-receives-a-list-of-classes私が言うことができるのは、プロジェクトをきれいにして再構築して見ることです。時にはキャッシュによって問題が発生することがありますか? –

+0

それは私が不思議に思っているものです!私はすでにここで与えられたすべての答えを試しました。このエラーとして私が間違って反映している箇所があるかもしれません。整流しようとしてください。 –

関連する問題