Contents
起動時(gradle bootRunした時)のエラー・例外
No | エラー・例外名 | 発生理由と解決策 |
1 | Failed to configure a DataSource | 発生理由:データベース接続先が設定されていない。 解決策:データベースを始動する。application.propertiesにデータベース接続先を記述する。 |
2 | BeanCreationException: Error creating bean with name | 発生理由:同じURLに対して、複数のControllerが割り当てられた。 解決策:@RequestMapping/@GetMapping/@PostMappingの値に重複がないか確認する。 |
3 | javax.servlet.ServletException: No adapter for handler | 発生理由:コントローラー周りのコーディングミスの可能性が高い。 解決策:コントローラーに付与しているアノテーションが正しいか確認する。 |
4 | java.sql.SQLException: The server time zone value 'xxx' is unrecognized or represents more than one time zone. | 発生理由: 解決策: |
5 | APPLICATION FAILED TO START Web server failed to start. Port 8080 was already in use. | 発生理由:8080ポートで起動しようとしたが、既に8080が使われていた。 解決策:別のポート番号を指定して起動する。 |
6 | CommunicationsException: Communications link failure | 発生理由:JDBCドライバがデータベースに接続できなかった。 解決策:データベースを起動する。 |
7 | Parameter 0 of constructor in Xxx required a bean of type 'YYY' that could not be found. | 発生理由:コンストラクタでセットするBeanが見つからなかった。 解決策:コンストラクタでセットするBeanクラスに@Service/@Componentなどを付与する。 |
8 | ConflictingBeanDefinitionException | 発生理由:重複するbean名があるため、起動させられません。 解決策:bean名が重複するController/Service/Repository などを見直し、重複を解消する。 |
9 | Ambiguous mapping. Cannot map 'xxxController' method | 発生理由:xxxControllerにおいて、同じURLに対して、複数のメソッドが割り当てられた。 解決策:xxxController内で@RequestMapping/@GetMapping/@PostMappingの値に重複がないか確認する。 |
コントローラー層のエラー・例外
No | エラー・例外名 | 発生理由と解決策 |
1 | HttpMessageNotWritableException: No converter found for return value of type: class Xxx | 発生理由:レスポンスDTOのフィールドに対するGetterが存在しない。 解決策:レスポンスDTOの各フィールドにGetterが存在するか確認する。または、レスポンスDTOに1つ以上フィールドをセットする。 |
2 | No adapter for handler [XxxController]: The DispatcherServlet configuration needs to include a HandlerAdapter that supports this ServletException: No adapter for handler | 発生理由:リクエストURLに対するハンドラーメソッドが定義されていない。 解決策:@Controllerや@RequestMappingが適切に記述されているか確認する。 |
3 | javax.validation.UnexpectedTypeException: HV000030: No validator could be found for constraint 'javax.validation.constraints.NotBlank' validating type 'java.time.LocalDate'. Check configuration for 'birthday' | 発生理由:@NotBlankを付与したフィールドの型が、@NotBlankに対応していない。 解決策: @NotBlankを付与したフィールドの型を変えるか、@NotNullでチェックする。 |
データ層(Repository/Dao)のエラー・例外
No | エラー・例外名 | 発生理由と解決策 |
1 | java.sql.SQLIntegrityConstraintViolationException: Column 'xxxx' cannot be null | 発生理由:整合性制約 (外部キー、主キー、または一意キー) の違反が発生した 解決策:該当カラムの値をセットする。ヌルチェックする。 |
2 | ||
3 |
JUnitテスト実行時のエラー
No | エラー・例外名 | 発生理由と解決策 |
1 | Cannot invoke "somefield.somemethod" because "this.somefield" is null | this.somefieldにインスンタスがDIされていないため、テスト対象のメソッドが実行できない。 @SpringBootTestをテストクラスに付与することで、インスタンスがDIされる。 |
2 | Execution failed for task ':test'. No tests found for given includes: | @Testを付与したメソッドがあるにも関わらず発生する場合、 「test { useJUnitPlatform() }」をbuild.gradleに記述する。 |
Thymeleaf関係のエラー
No | エラー・例外名 | 発生理由と解決策 |
1 | TemplateInputException: Error resolving template [xxx], template might not exist or might not be accessible by any of the configured Template Resolvers | テンプレートが見つからない。 テンプレートのディレクトリを確認する。 |
2 | ・java.lang.IllegalStateException: Neither BindingResult nor plain target object for bean name 'xxx' available as request attribute ・TemplateProcessingException ・ParseException | テンプレート内で参照されている${xxx}がmodelにセットされていない。 |