質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.51%

  • Java

    15820questions

    Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

  • Spring

    840questions

    Spring Framework は、Javaプラットフォーム向けのオープンソースアプリケーションフレームワークです。 Java Platform上に、 Web ベースのアプリケーションを設計するための拡張機能が数多く用意されています。

  • Tomcat

    617questions

    TomcatはApache Software Foundation (ASF)で開発されたオープンソースのWebコンテナです。

開発環境では、デバッグができるのになぜcentos7のtomcatにデプロイすすとエラーになるのか教えてください。

解決済

回答 3

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 1,893

UekiKouji

score 108

いつもお世話になります。ご教授をお願いします。

【開発環境】
Windows7
eclipse4.5
Java8
tomcat7

【デプロイ環境】
CentOS7
tomcat7
Java8
です。
spring4で作成したアプリをCentOS7にデプロイをしようとしました。

開発環境では、デバッグできたのですが、デプロイすると以下のエラーが表示されました。

type 例外レポート
メッセージ サーブレット appServlet のServlet.init()が例外を投げました
説明 The server encountered an internal error that prevented it from fulfilling this request.
例外
javax.servlet.ServletException: サーブレット appServlet のServlet.init()が例外を投げました
    org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:501)
    org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
    org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:950)
    org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
    org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1040)
    org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:607)
    org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:314)
    java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
    java.lang.Thread.run(Thread.java:745)
原因
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'fileController': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: private org.springframework.validation.Validator com.name.p.controller.FileDetailController.validator; nested exception is org.springframework.beans.factory.NoUniqueBeanDefinitionException: No qualifying bean of type [org.springframework.validation.Validator] is defined: expected single matching bean but found 3: org.springframework.validation.beanvalidation.OptionalValidatorFactoryBean#0,userInfoValidator,org.springframework.validation.beanvalidation.OptionalValidatorFactoryBean#1
    org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:334)
    org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1214)
    org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:543)
    org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:482)
    org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:306)
    org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230)
    org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:302)
    org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197)
    org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:772)
    org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:839)
    org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:538)
    org.springframework.web.servlet.FrameworkServlet.configureAndRefreshWebApplicationContext(FrameworkServlet.java:667)
    org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:633)
    org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:681)
    org.springframework.web.servlet.FrameworkServlet.initWebApplicationContext(FrameworkServlet.java:552)
    org.springframework.web.servlet.FrameworkServlet.initServletBean(FrameworkServlet.java:493)
    org.springframework.web.servlet.HttpServletBean.init(HttpServletBean.java:136)
    javax.servlet.GenericServlet.init(GenericServlet.java:158)
    org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:501)
    org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
    org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:950)
    org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
    org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1040)
    org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:607)
    org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:314)
    java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
    java.lang.Thread.run(Thread.java:745)


開発環境ではうごくのに、デプロイ環境では動かない理由が皆目見当がつかず、わからないので、教えてください。

以下のことを調べました。

・SVNのリポジトリごとにWarファイルを作り、差分を確認した。
・開発環境とデプロイ環境の違い(ビルド環境がJava8かどうか調査)
・tomcatの再インストール(tomcat自体が壊れた可能性があるので)
・m2配下の不要なリポジトリを削除したのち、warファイルを作成し、デプロイを行う。
・開発環境とデプロイ環境での参照しているjarファイルの内容の差分の確認
・pom.xmlにjavax.validation:validation-api:1.1.0.Finalが設定されているかどうか
・http://okwave.jp/qa/q334190.htmlの内容のこと

何か気づいたことがあれば、おねがします。

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • A-pZ

    2016/08/25 12:55

    アプリケーションのデプロイ手順や方法を書くと回答が得られるかもしれません。

    キャンセル

回答 3

checkベストアンサー

0

開発環境とデプロイ環境とでアプリケーション実行時のクラスパスを確認してみてください。(設定ファイルの内容ではなく、実際に実行しているJVMのクラスパスの内容)

javaのクラスパスを取得|IT忘備録・メモ書きと日記

ログの「原因」箇所の1行目を改行入れてみました。
1つしかないはずのものが3つ見つかったといった感じのメッセージをspringフレームワークが出力しているので、クラスパス内に異なるバージョンのspringフレームワークのjarファイルがあるのかもしれません。
もしくは、warファイルに含めなくてもよいjarファイルを含めているか。

org.springframework.beans.factory.BeanCreationException:
    Error creating bean with name 'fileController': Injection of autowired dependencies failed;

    nested exception is org.springframework.beans.factory.BeanCreationException:
    Could not autowire field: 
        private org.springframework.validation.Validator com.name.p.controller.FileDetailController.validator;

    nested exception is org.springframework.beans.factory.NoUniqueBeanDefinitionException:
    No qualifying bean of type [org.springframework.validation.Validator] is defined:
        expected single matching bean but found 3:
            org.springframework.validation.beanvalidation.OptionalValidatorFactoryBean#0,
            userInfoValidator,
            org.springframework.validation.beanvalidation.OptionalValidatorFactoryBean#1

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2016/09/01 07:25

    連絡が遅くなりすいません。ご回答ありがとうございました。

    キャンセル

0

よくあるのが

ローカル環境のtomcatの共通ライブラリには存在して
リモート環境のtomcatの共通ライブラリには存在しないライブラリ(jar)がある。

tomcatのバージョン違いによるバグ
マイナーバージョンも含む

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2016/09/01 07:25

    連絡が遅くなりすいません。ご回答ありがとうございました。

    キャンセル

0

スタックトレースの中に

NoUniqueBeanDefinitionException

が出ているので、おそらくCentOS環境に乗せている際に、ローカル環境よりもクラスパスに追加しているjarファイルが多いのではないかと思います。

warファイル内の/WEB-INF/lib や Tomcatのlibディレクトリに余分なjarファイルがないか、なども考えられます。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2016/09/01 07:25

    連絡が遅くなりすいません。ご回答ありがとうございました。

    キャンセル

同じタグがついた質問を見る

  • Java

    15820questions

    Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

  • Spring

    840questions

    Spring Framework は、Javaプラットフォーム向けのオープンソースアプリケーションフレームワークです。 Java Platform上に、 Web ベースのアプリケーションを設計するための拡張機能が数多く用意されています。

  • Tomcat

    617questions

    TomcatはApache Software Foundation (ASF)で開発されたオープンソースのWebコンテナです。

  • トップ
  • Javaに関する質問
  • 開発環境では、デバッグができるのになぜcentos7のtomcatにデプロイすすとエラーになるのか教えてください。