2016-05-12 11 views
3

クラスCategoryFormatter.javaが見つかりません。 (IntellijIdea + Tomcatの9 + Mavenの)名前 'conversionService'を持つBeanの作成中にエラーが発生しました。

MVC-core.config

<mvc:annotation-driven conversion-service="conversionService"/>  
     <bean id="conversionService" class="org.springframework.format.support.FormattingConversionServiceFactoryBean"> 
      <property name="formatters"> 
       <set> 
        <bean class="diplom.whatsnew.server.web.CategoryFormatter"/> 
       </set> 
      </property> 
     </bean> 

WhatsNewService.java

package diplom.whatsnew.server.service; 

import diplom.whatsnew.server.model.*; 
import org.springframework.dao.DataAccessException; 

import javax.jws.soap.SOAPBinding; 
import java.util.Collection; 



public interface WhatsNewService { 

    Collection<Category> findCategory() throws DataAccessException; 

    City findCityById(int id) throws DataAccessException; 

    Places findPlaceById(int id) throws DataAccessException; 

    void savePlace(Places place) throws DataAccessException; 

    void deletePlace(Places place) throws DataAccessException; 

    void saveEvents(Events events) throws DataAccessException; 

    void deleteEvente(Events events) throws DataAccessException; 

    void saveCity(City city) throws DataAccessException; 

    Collection<Users> findUsers() throws DataAccessException; 

    Collection<City> findCityByName(String name) throws DataAccessException; 
} 

CategoryFormatter.java

package diplom.whatsnew.server.web; 
import diplom.whatsnew.server.model.Category; 
import diplom.whatsnew.server.service.WhatsNewService; 
import org.springframework.beans.factory.annotation.Autowired; 
import org.springframework.format.Formatter; 

import java.text.ParseException; 
import java.util.Collection; 
import java.util.Locale; 
public class CategoryFormatter implements Formatter<Category> { 

private final WhatsNewService whatsNewService; 

@Autowired 
public CategoryFormatter(WhatsNewService whatsNewService) 
{ 
    this.whatsNewService=whatsNewService; 
} 

@Override 
public String print(Category category, Locale locale) 
{ 
    return category.getName(); 
} 

@Override 
public Category parse(String text,Locale locale) throws ParseException{ 
    Collection<Category> findCategory=this.whatsNewService.findCategory(); 
    for(Category category: findCategory){ 
     if(category.getName().equals(text)){ 
      return category; 
     } 
    } 
    throw new ParseException("type not found: " + text, 0); 
} 

} 

web.xmlの

<?xml version="1.0" encoding="ISO-8859-1"?> 
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xmlns="http://java.sun.com/xml/ns/javaee" 
     xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
      http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" 
     version="3.0" metadata-complete="true"> 

<display-name>Spring WhatsNew</display-name> 
<description>Spring WhatsNew sample application</description> 


<context-param> 
    <param-name>spring.profiles.active</param-name> 
    <param-value>jdbc</param-value> 
</context-param> 

<context-param> 
    <param-name>contextConfigLocation</param-name> 
    <param-value>classpath:spring/business-config.xml, classpath:spring/tools-config.xml</param-value> 
</context-param> 

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


<servlet> 
    <servlet-name>whatsnew</servlet-name> 
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
    <init-param> 
     <param-name>contextConfigLocation</param-name> 
     <param-value>classpath:spring/mvc-core-config.xml</param-value> 
    </init-param> 
    <load-on-startup>1</load-on-startup> 
</servlet> 

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


<servlet> 
    <servlet-name>dandelionServlet</servlet-name> 
    <servlet-class>com.github.dandelion.core.web.DandelionServlet</servlet-class> 
    <load-on-startup>2</load-on-startup> 
</servlet> 
<servlet-mapping> 
    <servlet-name>dandelionServlet</servlet-name> 
    <url-pattern>/dandelion-assets/*</url-pattern> 
</servlet-mapping> 


<filter> 
    <filter-name>encodingFilter</filter-name> 
    <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> 
    <init-param> 
     <param-name>encoding</param-name> 
     <param-value>UTF-8</param-value> 
    </init-param> 
    <init-param> 
     <param-name>forceEncoding</param-name> 
     <param-value>true</param-value> 
    </init-param> 
</filter> 

<filter-mapping> 
    <filter-name>encodingFilter</filter-name> 
    <url-pattern>/*</url-pattern> 
</filter-mapping> 


<filter> 
    <filter-name>dandelionFilter</filter-name> 
    <filter-class>com.github.dandelion.core.web.DandelionFilter</filter-class> 
</filter> 
<filter-mapping> 
    <filter-name>dandelionFilter</filter-name> 
    <url-pattern>/*</url-pattern> 
</filter-mapping> 


<filter> 
    <filter-name>datatables</filter-name> 
    <filter-class>com.github.dandelion.datatables.core.web.filter.DatatablesFilter</filter-class> 
</filter> 
<filter-mapping> 
    <filter-name>datatables</filter-name> 
    <url-pattern>/*</url-pattern> 
</filter-mapping> 


</web-app> 

エラー

org.springframework.beans.factory.BeanCreationException:名前を持つBeanを作成中にエラーが発生しまし 'conversionService' クラスパス リソースで定義されている[春/mvc-core-config.xml]:内部Beanを作成できません の[diplom.whatsnew.server.web.CategoryFormatter#19b8e7d5] [diplom.whatsnew.server.web.CategoryFormatter] wh beanを プロパティ 'formatters'に設定してキー[0]で設定します。できない 名前を持つBean を見つけるクラス[diplom.whatsnew.server.web.CategoryFormatter] 'diplom.whatsnew.server.web.CategoryFormatter#19b8e7d5' で定義されている:ネストされた例外は org.springframework.beans.factory.CannotLoadBeanClassExceptionですクラスパスリソース[spring/mvc-core-config.xml];ネストされた 例外はあるにjava.lang.ClassNotFoundException: diplom.whatsnew.server.web.CategoryFormatter

org.springframework.beans.factory.CannotLoadBeanClassException:ない 検索クラス[diplom.whatsnew.server.web.CategoryFormatter]のための缶Bean 名前が 'diplom.whatsnew.server.web.CategoryFormatter#77b6dc78' であり、クラスパスリソース[spring/mvc-core-config.xml]に定義されています。ネストされた 例外はあるにjava.lang.ClassNotFoundException: diplom.whatsnew.server.web.CategoryFormatter

にjava.lang.ClassNotFoundException: diplom.whatsnew.server.web.CategoryFormatter

+0

どのようにアプリをパッケージ化して実行しますか?クラスはランタイムクラスパス上にありますか? – Nadir

+0

CategoryFormaterとは何ですか?あなたはそれに春の注釈を持っていますか、見えません。また、上に表示されるパッケージ名を貼り付けます。 –

+0

なぜ 'prototype'スコープ付きBean(内部Bean)を使いたいのですか?コンストラクタで 'CategoryFormatter'ビーンをインスタンス化するために使用される' WhatsNewService'ビーンはどこに定義されていますか? – Braj

答えて

0

問題はここにありますBean定義のための春には、引数なしのコンストラクタを待っ:

<bean class="diplom.whatsnew.server.web.CategoryFormatter"/> 

とあなたのクラスでは、あなたはautowired引数で1

を持っています
@Autowired 
public CategoryFormatter(WhatsNewService whatsNewService) 
{ 
    this.whatsNewService=whatsNewService; 
} 

ので、BeanはXML宣言の変化を修正するには

が作成されていません(MVC-コア-config.xmlの)

<bean class="diplom.whatsnew.server.web.CategoryFormatter"> 
     <constructor-arg ref="whatsNewService"/> 
</bean> 
0

私はここで推測する問題です。

私はあなたのプロジェクトを見ました。

は、私はクラスの名前がPlaceCategoryFormatterなくパッケージの下CategoryFormatter diplom.whatsnew.server.web

くださいダブルチェックだと思います。

+0

ありがとう、私は名前を変更しましたが、まだ動作しません – Alice

+0

今エラーです。 – shankarsh15

+0

同じエラーメッセージ – Alice

関連する問題