2012-03-14 19 views
0

私はJavaでデスクトップアプリケーションを使用しており、これはHibernateを介してMySqlデータベースに接続しています。突然「NoSuchBeanDefinitionExceptionが見つかりませんでした」、正しい設定で

は、私は設定のため、次のファイルがあります:私はいくつかのものを入れて

  • のpom.xml、およびデータベースプロファイル
  • 私は豆などの主要な構成を、置く[APP_NAME] _context.xml、私はアプリは、ほぼ完成している、すべてが100%を働いていたが、その後、私はCHことにしました
  • テーブルに

をマッピングを入れて、データソース

  • は[APP_NAME] _hibernate.cfg.xml、 DBプロファイルを作成するための設定を行います(その前にpom.xmlにはプロファイルが含まれていません)。 私はpom.xmlにプロファイルを作成し、context.xmlからそれらを参照しました。すべてが機能していた。それでは、デバッグのためにSQLをターミナルに印刷したかったのですが、何らかの理由で印刷されませんでした。だから私はそれが正しくなるまでデータベース構成を変更しました。すべてが機能していた。それから、私はそれが以前に働いていた正確な設定であるsql-printが変更される前の状態に変更しましたが、今はいつもそこにあって変更されていないbeanに対してこのエラーが発生します。

    データソースのcontext.xmlで:ここで

    はそれをよりよく理解するためのいくつかのコードです($ {}文字列はのpom.xmlに保存された実数値で濾過し、交換されている)

    <bean id="desenvolvimentoDS" class="org.apache.commons.dbcp.BasicDataSource"> 
        <property name="driverClassName"> 
         <value>org.hibernate.dialect.MySQLDialect</value> 
        </property> 
        <property name="url"> 
         <value>${db.mysql.url}</value> 
        </property> 
        <property name="username"> 
         <value>${db.mysql.username}</value> 
        </property> 
        <property name="password"> 
         <value>${db.mysql.password}</value> 
        </property> 
    </bean> 
    

    pom.xmlに、使用されている現在のプロファイル:

    <profile> 
         <id>HOMOLOGACAO</id> 
         <activation> 
          <activeByDefault>true</activeByDefault> 
         </activation> 
         <properties> 
          <profile.group>HOMOLOGACAO</profile.group> 
          <maven.test.skip>true</maven.test.skip> 
          <db.show_sql>true</db.show_sql> 
          <db.format_sql>false</db.format_sql> 
          <db.mysql.url>[filtered]</db.mysql.url> 
          <db.mysql.username>[filtered]</db.mysql.username> 
          <db.mysql.password>[filtered]</db.mysql.password> 
         </properties> 
        </profile> 
    

    プロファイル値にそれらのcontext.xml文字列をフィルタリングする春に指示のpom.xmlのリソースパート、:

    <resources> 
         <resource> 
          <directory>src/main/resources/configuracao</directory> 
          <filtering>true</filtering> 
         </resource> 
        </resources> 
    

    そして最後に、私のエラー与えている豆:

    <bean name="servidorUDP" 
        class="br.uff.pgci.sgca.gateway.server.ServidorUDP" 
        scope="singleton"/> 
    

    再開を、私は、構成を整理するためにデータベースプロファイルを作成した前後に、いくつかのデータベース構成を変更し、そして突然、私は」 NoSuchBeanDefinitionExceptionが発生しました。ServidorUDPという名前のBeanがありません。

    誤った改行、スペース、間違ったオープン/クローズxmlタグが原因である可能性がありますか?私はこれが事実ではないと確信していますが、わかりません...

  • 答えて

    1

    正確に[app_name] _context.xmlを配置しましたか? pomで導入したフィルターは、Bean定義XMLをスキップしていますか?

    これを確認してくださいhttp://maven.apache.org/plugins/maven-resources-plugin/examples/filter.html、それはあなたに手がかりを与えるかもしれません。

    +0

    ああ、リソースディレクトリが間違っていた、私のマネージャーは単に "src/main/resources"の代わりに "src/main/resources/configuracao"を置くように言った。彼がSpring、Hibernate、そしてそのすべてを知っている人だから面白いです。私はこれまでのところ、休止状態のものをコピー&ペーストしています。ありがとう! –

    +0

    クール。あなたが問題を修正して良かった。 – raddykrish

    1

    最も可能性の高い説明は、プロファイルの変更によりファイルのコピーが停止したために、servidorUDPを含むコンテキストファイルが見つかりませんクラスパス上の正しい場所に移動します。 target/classesディレクトリの内容を確認して、ファイルが期待どおりの場所にあることを確認し、ログが読み込まれた証拠を確認します。 Springはある時点で見つかったすべてのBeanのリストをログに記録し、それを探して欠落しているBeanを確認します。

    +0

    データベースファイルと私が使用しているすべてのBeanを含むコンテキストファイルは1つだけです。私が設定構造に行った唯一の実際の変更は、hibernate.cfg.xmlファイルからdb configをpomに移動し、コンテキストを参照して値を取得させることでした。 –

    関連する問題