値 "${xxx}" のプレースホルダー 'xxx' を解決できませんでした。
質問
今日ideaでspringbootを起動したところ、設定に
エラーを報告しました。ネストされた例外は java.lang.Injection of autowired dependencies failed です。'project.url' の値が "${project.url}" になっています。
解決プロセス/思考プロセス(思考プロセスを見たくない場合は、解決にスキップしてください。)
まず、すべての設定ファイルをチェックして、問題がないことを確認しました。
次に、ログをチェックして、開発環境であること、必要な設定がすべてファイルに入っていることを確認しました
そして、ログによると、エラーが報告された場所を探す
というように、PropertyPlaceholderHelper の parseStringValue メソッド。
近くのコードを探してみると、propValがNULLであるためにエラーが報告されていることがわかりました。
次に、propVal が定義されているところからデバッガを起動します。
placeholderResolver.resolvePlaceholder(placeholder); が ${xxx} の xxx のプロパティを取得していることがわかったので、Ctrl+u でコードを実行する。
プレースホルダーを他のプロパティ文字列に置き換えて、いくつかの設定値が実際に取得されていないことを発見しました。
しかし、形而上学的な問題はすべて理解不足が原因であり、発見できないのは慣れていないためである
原因について考え始める
ご存知のように、コードを実行するディレクトリは、ソースコードがあるディレクトリではなく、プロジェクトをコンパイルしたディレクトリであり、コンパイルしたディレクトリのコンフィグレーションに移動します
このディレクトリspringbootのログは、実際には図のように出力されています。
案の定、コンパイルされたディレクトリに設定がないことが判明しました。
原因がわかれば、maven clearで生成されたファイルをクリアして、再度やり直すことができます
問題解決!
解決方法
- 設定ファイルに設定内容が間違って書かれていないか確認する
-
設定ファイル application.yml/bootstrap.yml の active が対になっているか、または log のこのログを見て、該当するログファイルを確認します。
- 上記のチェックに問題がなければ、ターゲットディレクトリ(または自作クラスファイルの出力ディレクトリ)の設定ファイルが正しいかどうかをチェックし、正しくない場合はmaven clearコマンドでクリアして再起動します
- それでもダメなら、ソースコードでデバッガー
まとめ
形而上学的な問題はすべて、私たちが十分に精通していないからです。すべてのバグには1つ以上の原因があるはずで、形而上学的な問題だと考えるのは、私たちがそのことに十分に精通していないことを意味するだけで、形而上学のせいではありません。コンピュータ業界ではなおさら、形而上学をコードから排除すべきなのです
この記事を書いていて思い出したのですが、私がこの業界に入ったばかりの頃は、デバッグもできず、バグの修正の仕方もわからず、多くの問題を形而上学のせいにし、なぜバグができたのかわからないときはリスタートという方法をよく使い、うまくいくときもあればうまくいかないときもありましたが、おそらくこの方法論の一部が欠けていたせいでしょう
関連
-
java.util.NoSuchElementException 原因解析と解決方法
-
リソースの読み込みに失敗しました。サーバーはステータス500(内部サーバーエラー)で応答しました。
-
Maven Pluginの実行がライフサイクル設定の対象外であるエラーの解決
-
Ajaxによるバックグラウンドへのアクセス 500 (Internal Server Error)問題
-
java reflection exception: argument type mismatch solution (Java反射例外: 引数タイプの不一致の解決)
-
航空機戦争ゲームのJava実装 (ソースコード+コメント)
-
AxisFault: com.ctc.wstx.exc.WstxEOFException.AxisFault.WstxEOFException: Prolog サービスで予期しない EOF が発生し、接続できません。
-
Intellij IDEA 実行前エラー コマンドラインが長すぎます。
-
DataIntegrityViolationException (データ整合性違反例外)
-
HttpClient リクエスト DefaultHttpClient 時代遅れの代替品
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
サーブレットクラスのインスタンス化エラーの解決法
-
Methodのinvokeメソッド実装のJavaリフレクション
-
spring aop アドバイスからの Null 戻り値が、サマリーのプリミティブ戻り値と一致しない。
-
org.glassfish.jersey.servlet.ServletContainer
-
Exception: java.util.NoSuchElementException: 行が見つかりません
-
プラグインの実行は、ライフサイクル構成によってカバーされていません: org.codehaus.mojo:aspectj-maven-plugin:1.3.
-
解決策 説明 リソースパス 場所 種類 必要なライブラリのアーカイブ
-
java.utilのjavaSE Error。
-
JDK7のComparisonメソッドのイラストは、その一般契約の例外に違反しています。
-
JavaでCSVファイルを読み込む方法とパースする方法