0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【Spring入門】付録B よくあるエラーと対処法

0
Last updated at Posted at 2026-10-06

この教材を進める中で出会いやすいエラーを、場面ごとにまとめました。エラーが出たら、まず表示されたメッセージの中の特徴的な言葉(ORA- の番号や英語のキーワード)を、このページで探してみましょう。

B.1 エラーを読むコツ

エラーメッセージは長くて英語ばかりなので、最初は読む気がしないかもしれません。しかし、見るべき場所はだいたい決まっています。

コンソールのエラーは「一番下の Caused by:」を見る

Eclipse のコンソールに赤い文字で長いメッセージが出たら、上から全部読む必要はありません。次の順で探しましょう。

  1. ERROR と書かれた行を探し、その行の最後の文章を読みます。何が失敗したかの概要が書かれています。
  2. メッセージを下へスクロールし、一番下にある Caused by: の行を読みます。これが 本当の原因 であることが多いです。
  3. ORA-01017 のような ORA- で始まる番号 があれば、それはデータベース(Oracle)からのエラーです。番号でこのページを検索してください。
コンソール(例)
... ERROR ... Application run failed
org.springframework.beans.factory.BeanCreationException: ...
    at ...(たくさんの at 行が続く。ここは読み飛ばしてよい)
...
Caused by: java.sql.SQLException: ORA-01017: ユーザー名/パスワードが無効です。ログオンは拒否されました。

ブラウザのエラーは「status」と「message」を見る

Chrome に Whitelabel Error Page という画面が表示されたら、Spring がエラーを返しています。画面の中の status(ステータスコード)と、その下の説明文を見ましょう。ステータスコードの意味は 第1章 1.2 で説明しています。

画面イメージ:http://localhost:8080/employee

Whitelabel Error Page

This application has no explicit mapping for /error, so you are seeing this as a fallback.

There was an unexpected error (type=Not Found, status=404).

500(サーバー内部のエラー)の場合、ブラウザには詳しいことが表示されません。Eclipse のコンソール にエラーの詳細が出ているので、そちらを確認してください。

英語のエラー文の読み方の例

よく出る英語 意味
could not be found / not found 見つからない
required a bean of type ... …という型の Bean(Spring が管理する部品)が必要
already in use すでに使われている
not supported 対応していない(使えない)
cannot be found on object of type ... …という型のオブジェクトの中に見つからない
Failed to convert ... …の変換に失敗した(文字を数値にできない、など)

【便利な使い方】エラーは「どこで」「何が」を探すゲーム

エラーメッセージには、たいてい「どのクラス・どのファイル」で「何が」起きたかが書かれています。クラス名やファイル名、自分で付けた名前(employeeRepository や registerForm など)が出てきたら、そこが手がかりです。

B.2 起動時のエラー

Eclipse でアプリを起動したとき、コンソールに赤い文字のエラーが出て止まってしまう場合です。

データベースに接続できない

エラー表示
ORA-01017 ユーザー名/パスワードが無効です
原因 ユーザー名かパスワードが違う
対処 application.properties の spring.datasource.username と password が empapp になっているか確認します。第3章でユーザーを作成したかも確認します(第3章 3.3)
ORA-28001 パスワードの有効期限が切れています
原因 empapp のパスワードの期限が切れた(既定では 180 日)
対処 「開発環境の準備」の「パスワードの期限が切れたとき」の手順で、XE_SYSTEM のワークシートで ALTER USER empapp IDENTIFIED BY empapp ACCOUNT UNLOCK; を実行して、パスワードを設定し直します。そのあと、第3章 3.3「パスワードを無期限にする」の SQL を XE_SYSTEM で実行し、アプリを起動し直します
ORA-12514 リスナーは接続記述子でリクエストされたサービスを現在認識していません
原因 サービス名が違う
対処 spring.datasource.url の最後が /XEPDB1(mac では FREEPDB1) になっているか確認します(:XE や /XE ではありません)
ORA-12541 リスナーがありません / IO エラー 接続が拒否されました
原因 Oracle Database が起動していない
対処 Windows のスタートメニューで「サービス」と検索して開き、OracleServiceXE と OracleOraDB21Home1TNSListener の状態が「実行中」か確認します。止まっていたら、右クリック →「開始」を選びます(「開発環境の準備」5)

【知識メモ】MyBatis コースの場合

MyBatis コースのアプリは、起動したときにはまだデータベースに接続しません(第4章 4.3)。そのため、上の表のエラーは起動のときには出ず、起動は成功します。初めて SQL を実行したとき(第8章で社員一覧を表示したときなど)に、画面が 500 エラー(Whitelabel エラー画面)になり、コンソールに次のようなメッセージと、その原因の ORA-01017 などが表示されます。原因と対処は、上の表と同じです。

コンソール(MyBatis コースの例。一部)
org.mybatis.spring.MyBatisSystemException:
### Error querying database.  Cause: org.springframework.jdbc.CannotGetJdbcConnectionException: Failed to obtain JDBC Connection
java.sql.SQLException: ORA-01017: ユーザー名/パスワードが無効です。ログオンは拒否されました。

ポートが使われている

エラー表示
Port 8080 was already in use.
原因 アプリを 二重に起動 している(前に起動したアプリが動いたまま)
対処 Eclipse のコンソールの赤い四角(終了)ボタンで、動いているアプリを停止してから起動し直します。
コンソールが複数あるときは、コンソールのツールバーの「コンソールの表示」ボタン(モニターの形のアイコン)で切り替え、古い実行もすべて止めます。
Boot ダッシュボードを使っている場合は、そこからも停止できます。
Port 8080 was already in use. (Eclipse のアプリをすべて止めても出る)
原因 Eclipse が異常終了したときなどに、前に起動したアプリの Java(javaw.exe)が残っている
対処 Eclipse を終了してから、Ctrl + Shift + Esc でタスク マネージャーを開き、「詳細」タブで javaw.exe を選んで「タスクの終了」を押します。そのあと Eclipse を起動し直します。
SQL Developer など、ほかの Java で動くソフトも止まることがあるので、先に終了しておきます。

【ご注意】Eclipse 以外のソフトが 8080 番を使っている場合

Eclipse のアプリを止めても解決しないときは、他のソフトが 8080 番を使っている可能性があります。どのプログラムがポート 8080 を使っているかは、Windows の コマンド プロンプト で調べられます。

  1. Windows キーを押しながら R キーを押します。「ファイル名を指定して実行」の画面が開くので、cmd と入力して Enter キーを押します。黒い画面(コマンド プロンプト)が開きます。

  2. 次のコマンドを入力して、Enter キーを押します。

    コマンド プロンプト
    netstat -ano | findstr ":8080 "
    
  3. 次のような行が表示されます。行の右端の数字が、そのポートを使っているプログラムの番号(PID)です。

    表示の例
      TCP         0.0.0.0:8080           0.0.0.0:0              LISTENING       12345
    

    何も表示されなければ、ポート 8080 は使われていません。

  4. タスク マネージャー(Ctrl キーと Shift キーを押しながら Esc キー)を開き、「詳細」タブの「PID」の列で、その番号のプログラムの名前を確かめます。

心当たりのあるソフトを終了するか、パソコンの管理者に相談してください。Oracle の 1521 番も、コマンドの :8080 を :1521 に変えれば、同じ方法で確認できます。

【ご注意】mac で取り組んでいる場合

mac では、上の表のタスク マネージャーと、上の囲みのコマンド プロンプトは使えません。次のように読み替えます。

前に起動したアプリの Java が残っているとき(上の表の2つ目)

  1. Eclipse を終了します。
  2. ⌘ + Space で Spotlight を開き、アクティビティモニタ と入力して Return を押します。「アクティビティモニタ」は、Windows のタスク マネージャーにあたるアプリです。
  3. 右上の検索欄に java と入力します。表示された java を選び、上の「停止」ボタン(丸の中に × のマーク)を押して、「終了」を押します。
  4. Eclipse を起動し直します。

Eclipse 以外のソフトが 8080 番を使っているかを調べるとき(上の囲み)

  1. ターミナルを開きます(「開発環境の準備(macOS版)」の「ターミナルを開く」)。

  2. 次のコマンドを入力して、Return を押します。

    ターミナル
    lsof -nP -iTCP:8080 -sTCP:LISTEN
    
  3. 次のような行が表示されます。左端の「COMMAND」がそのポートを使っているプログラムの名前で、その右の数字が番号(PID)です。

    表示の例
    COMMAND   PID      USER   FD   TYPE             DEVICE SIZE/OFF NODE NAME
    java    12345 <ユーザー名>   80u  IPv6 0x1234567890abcdef      0t0  TCP *:8080 (LISTEN)
    

    何も表示されなければ、ポート 8080 は使われていません。何も表示されないのに同じエラーが出るときは、mac を再起動してください。

  4. アクティビティモニタの検索欄に、COMMAND の名前を入力して、そのプログラムを確かめます。

心当たりのあるソフトを終了してください。Oracle の 1521 番も、コマンドの 8080 を 1521 に変えれば、同じ方法で確認できます。mac では、1521 番は OrbStack(Oracle のコンテナ)が使っているのが正常です。

部品(Bean)やクラスが見つからない

エラー表示
Field ... in ... required a bean of type '...' that could not be found.
原因 @Autowired で受け取ろうとした部品を、Spring が見つけられない
対処 受け取る側のクラスに @Component・@Repository などを付け忘れていないか確認します。クラスが com.example.employeeapp パッケージの 下 にあるかも確認します(第5章 5.2)
Not a managed type: class ...(JPA コース)
原因 Entity として認識されていない
対処 Entity クラスに @Entity が付いているか、entity パッケージが com.example.employeeapp の下にあるかを確認します(第6章 6.4)
No property 'xxx' found for type 'Employee'(JPA コース)
原因 Repository のメソッド名と、Entity のフィールド名が合っていない
対処 たとえば findByEmpId なら、Employee に empId というフィールドが必要です。大文字・小文字も含めて確認します(第7章 7.2)
Failed to load driver class oracle.jdbc.OracleDriver ClassNotFoundException: oracle.jdbc.OracleDriver
原因 Oracle に接続するためのライブラリ(Oracle Driver)がプロジェクトに入っていない
対処 第4章でプロジェクトを作るときに「Oracle Driver」を選び忘れています。プロジェクトを右クリック → Spring → スターターの追加 で「Oracle Driver」を追加します(第4章 4.1)
A '@JoinColumn' references a column named 'xxx' but the target entity '...Department' has no property which maps to this column(JPA コース)
原因 @JoinColumn の referencedColumnName の値が、Department のフィールド名と合っていない
対処 Employee の @JoinColumn(name = "DEPT_ID", referencedColumnName = "deptId") の deptId が、Department クラスのフィールド名と同じつづりかを確認します(第6章 6.3)

【知識メモ】MyBatis コースの場合

上の表のうち「(JPA コース)」と書いたものは、JPA コースだけで出るエラーです。MyBatis コースでは、起動のときに次のエラーが出ることがあります。Mapper の書き間違いによるエラーの一覧は、第7章 MyBatis 入門② 7.5にもまとめています。

エラー表示 原因 対処
No qualifying bean of type 'com.example.employeeapp.mapper.EmployeeMapper' Mapper の実装が作られていない インターフェースに @Mapper が付いているかを確認します(第7章 MyBatis 入門② 7.1)
Error parsing Mapper XML Mapper の XML の書き方が間違っている メッセージの続きに書かれたファイル名と行を見て、タグの閉じ忘れ(</select> など)や、" の付け忘れを確認します(第7章 MyBatis 入門② 7.2)

気にしなくてよいメッセージ

【知識メモ】WARN HHH100123: Low default JDBC fetch size

起動時に黄色っぽい「WARN」でこのメッセージが出ることがありますが、データベースとの通信の調整に関する助言で、アプリの動作には影響しません。「WARN」は警告、「ERROR」は失敗です。ERROR が出ていなければ、起動は成功 しています(第4章 4.4)。

MyBatis コースでは、Mapper を作る前(第4〜6章)に、起動時に WARN ... No MyBatis mapper was found in '[com.example.employeeapp]' package. Please check your configuration. が出ます。Mapper がまだ1つもない、という知らせで、第7章で Mapper を作ると出なくなります(第4章 4.4)。

B.3 画面表示時のエラー

アプリは起動したが、Chrome で画面を開いたり、ボタンを押したりしたときに出るエラーです。

エラー表示
Chrome に「このサイトにアクセスできません」 (localhost で接続が拒否されました)
原因 Chrome 自身のエラー画面で、アプリに接続できていない。Whitelabel エラー画面とは違い、Spring は返事をしていない
対処 アプリを起動していないか、起動に失敗しています。Eclipse のコンソールに Started EmployeeAppApplication が出ているか確認します。URL のポート番号が 8080 になっているかも確認します(第4章 4.4)
Whitelabel Error Page status=404(Not Found)
原因 その URL を受け付ける処理がない
対処 ブラウザに入力した URL の打ち間違い(/employee と /employees など)を確認します。
Controller の @GetMapping・@PostMapping の URL、テンプレートの th:action・th:href の URL が一致しているか確認します。
Controller を追加・変更した後にアプリを再起動したかも確認します。
テンプレートと Controller のどちらの間違いかは、付録D の方法で切り分けられます。
status=405(Method Not Allowed)
原因 GET と POST の種類が合っていない
対処 @PostMapping で受ける処理に、フォームの method="post" を付け忘れていないか確認します(第9章 9.6)。
POST で受ける URL(例:/employees/3/delete)を、アドレス欄に直接入力して開くと GET になるため 405 になります。
テンプレートと Controller のどちらの間違いかは、付録D の方法で切り分けられます。
status=400(Bad Request)
原因 リクエストの値の形が合わない
対処 URL の社員IDの部分(/employees/abc/edit など)が数字になっているか確認します。
実際に送られた URL は、付録D の方法で確かめられます。
status=500 TemplateInputException Error resolving template
原因 Controller が返したテンプレート名のファイルが見つからない
対処 Controller の return "employee/list"; と、src/main/resources/templates/employee/list.html の場所・ファイル名が一致しているか確認します(第8章 8.8)。
この教材の URL は /employees(複数形)ですが、テンプレートのフォルダーは employee(単数形)です。return "employees/list"; と書くと、このエラーになります。
エラー表示が Error resolving template [redirect] のときは、return "redirect"; のように、redirect: の後ろの URL が抜けています。
status=500 TemplateInputException An error happened during template parsing
原因 テンプレートの th: 属性の書き方が間違っていて、Thymeleaf がテンプレートを読めない
対処 コンソールの Caused by: に、テンプレート名と行・列が出ます。たとえば Could not parse as expression: "@{/employees/register" (template: "employee/list" - line 11, col 24) なら、list.html の 11 行目で } が抜けています。
Attribute name cannot be null or empty のときは、th: href のように th: の後ろに空白が入っています。この場合は行番号が出ないので、そのテンプレートの th: をすべて見直します。
Property or field 'xxx' cannot be found on object of type '...'
原因 テンプレートの ${employee.xxx} に対応するゲッターがない
対処 ${employee.gender} なら getGender() が必要です。テンプレートの名前とゲッター名のつづりを確認します
Neither BindingResult nor plain target object for bean name 'registerForm' available as request attribute
原因 テンプレートの th:object="${registerForm}" に対応するフォームが Model に入っていない
対処 Controller で model.addAttribute("registerForm", ...) をしているか、@SessionAttributes・@ModelAttribute の名前とテンプレートの名前が一致しているか確認します(第10章 10.10)
Missing URI template variable 'empId'
原因 URL の {empId} に値が渡されていない
対処 @{/employees/{empId}/delete(empId=${employee.empId})} のように、後ろのかっこで値を渡しているか確認します。@PathVariable を付けた引数の名前(empId)も確認します(第9章 9.6)
表示はされるが、データの部分が空になる
原因 Model に入れた名前と、テンプレートで使う名前が違う
対処 Controller の model.addAttribute("employees", ...) と、テンプレートの ${employees} のつづりを確認します。エラーにならないので気づきにくい間違いです
画面のデザインが崩れる(CSS が効かない)
原因 CSS ファイルの場所か、読み込むパスが違う
対処 src/main/resources/static/css/app.css にあるか、テンプレートが th:href="@{/css/app.css}" になっているか確認します。Chrome で Ctrl + Shift + R(キャッシュを使わずに再読み込み)も試します

B.4 データベースのエラー

エラー表示
ORA-65096 共通ユーザーまたはロール名が無効です
原因 ユーザーを作るときに、アプリ用のデータベース(XEPDB1)ではなく、コンテナ・データベース(XE)に接続している
対処 SQL Developer の接続のプロパティで、「SID」の xe ではなく 「サービス名」の XEPDB1(mac では FREEPDB1) を指定して接続し直します(第3章 3.3)。
SELECT SYS_CONTEXT('USERENV', 'CON_NAME') FROM DUAL; で XEPDB1(mac では FREEPDB1) と表示されれば正しい接続です
ORA-02289 順序が存在しません
原因 シーケンスが見つからない
対処 第3章の CREATE SEQUENCE を実行したかを、SQL Developer の XE_EMPAPP 接続の「順序」で確認します(第3章 3.5)。
Entity の @SequenceGenerator の sequenceName のつづりが、SEQ_DEPT・SEQ_EMP と同じかを確認します
ORA-00942 表またはビューが存在しません
原因 テーブルが見つからない
対処 Entity の @Table(name = "EMPLOYEE") のテーブル名のつづりを確認します。
テーブルを empapp 以外のユーザー(system など)で作ってしまっていないか、SQL Developer の XE_EMPAPP 接続の「表」で確認します(第3章 3.5)
ORA-00904 無効な識別子です
原因 列名が違う
対処 Entity のフィールド名が、第3章で作ったテーブルの列名と対応しているか(deptId → DEPT_ID)、@JoinColumn(name = "DEPT_ID", referencedColumnName = "deptId") の列名が合っているか確認します
ORA-01400 NULL は挿入できません
原因 必須(NOT NULL)の列に値がないまま登録しようとした
対処 第11・12章の時点では入力チェックがないため、空欄のまま登録するとこのエラーになります。第13・14章で入力チェックを追加すると防げます(第11章 11.6)
ORA-02292 整合性制約に違反しました - 子レコードがあります
原因 社員から参照されている部署を削除しようとした
対処 この教材のアプリは部署を削除しないので、通常は出ません。SQL Developer で部署を削除したいときは、先にその部署の社員を削除します
ORA-02449 外部キーにより参照される一意/主キーが表にあります
原因 社員テーブルより先に部署テーブルを DROP しようとした
対処 DROP は EMPLOYEE → DEPARTMENT の順に行います(第3章 3.8)
ORA-00001 一意制約に反しています
原因 同じ主キーの値を2回登録しようとした
対処 社員ID・部署IDは自動で採番されるので、この教材では通常は出ません。INSERT 文で ID を自分で指定していないか確認します

【知識メモ】MyBatis コースの場合

MyBatis コースでは、SQL を Mapper の XML に自分で書くので、上の表の ORA- のエラーは、多くの場合 XML の SQL の書き間違いが原因です。「Entity の〜」と書いた対処は、次のように読み替えます。

エラー表示 原因 対処
ORA-00942 表またはビューが存在しません SQL のテーブル名が間違っている XML の SQL のテーブル名(EMPLOYEE・DEPARTMENT)のつづりを確認します
ORA-00904 無効な識別子です SQL の列名が間違っている メッセージの "…" に書かれた列名のつづりを、XML の SQL で確認します
ORA-02289 順序が存在しません シーケンスが見つからない EmployeeMapper.xml の <selectKey> の SEQ_EMP.NEXTVAL のつづりを確認します(第7章 MyBatis 入門② 7.3)
ORA-00933 SQLコマンドが正しく終了されていません SQL の最後に ; が付いている XML の SQL から ; を消します

MyBatis コースでは、画面を表示したときやボタンを押したときに、次のエラーが出ることもあります。

エラー表示 原因 対処
Invalid bound statement (not found): com.example.employeeapp.mapper.EmployeeMapper.findByEmpId メソッドに対応する SQL が見つからない XML の namespace がインターフェースの名前と、id がメソッドの名前と合っているかを確認します。XML ファイルが src/main/resources/mapper にあるかも確認します(第7章 MyBatis 入門② 7.3)
There is no getter for property named 'xxx' in 'class com.example.employeeapp.entity.Employee' #{…} の中の名前が、データのクラスのフィールド名と違う XML の #{…} の中のつづり(empId・birthDate・department.deptId など)を確認します
NullPointerException(部署名を取り出すところ) 社員の department が null のまま 社員の <select> に resultMap="employeeWithDepartment" が書いてあるか(resultType になっていないか)、<association> の property が department になっているかを確認します(第7章 MyBatis 入門② 7.3)

エラーは出ないが、おかしいとき

症状
SQL Developer では見えるのに、アプリの一覧やテストに出てこない(件数が合わない)
原因 SQL Developer で COMMIT していない
対処 SQL Developer のワークシートで COMMIT; を実行します。コミットするまでは、他の接続(アプリ)からはデータが見えません(第3章 3.6)
社員IDが 1, 2, 4 のように飛んでいる
原因 削除した、または登録に失敗したことがある
対処 エラーではありません。 シーケンスは、一度払い出した番号や失敗で消費した番号を再利用しません。番号を 1 からそろえたいときは、第3章の手順でシーケンスとテーブルを作り直します(第3章 3.8)

B.5 入力チェック・セッション関連のエラー

入力チェック(第13・14章)

症状・エラー表示
@NotBlank などが赤い下線になる(import できない)
原因 第4章でプロジェクトを作るときに Validation を選び忘れた
対処 プロジェクトを右クリック → Spring → スターターの追加 で「Validation」を追加します(第13章)
空欄のまま「確認」を押しても、エラーにならず確認画面に進んでしまう
原因 Controller の引数に @Validated を付け忘れている
対処 confirm メソッドの引数を @Validated @ModelAttribute RegisterForm registerForm にします
入力画面に戻らず、Whitelabel エラー画面(status=400)になる
原因 BindingResult の位置が違う
対処 BindingResult は、チェックするフォームの引数の すぐ後ろ に書く決まりです。間に Model などを挟まないでください
エラーメッセージが {name.notBlank} のように、キーのまま表示される
原因 messages.properties にそのキーがない、またはファイルの場所・名前が違う
対処 src/main/resources/messages.properties にあるか、アノテーションの {...} とファイルのキーのつづりが一致しているか確認します
エラーメッセージが文字化けする
原因 messages.properties の文字コードが UTF-8 になっていない
対処 ファイルを右クリック → プロパティー → リソース で「テキスト・ファイルのエンコード」を UTF-8 にし、メッセージを入力し直します(B.6)
エラーメッセージが表示されない
原因 テンプレートにエラー表示の行がない、または項目名が違う
対処 th:if="${#fields.hasErrors('name')}" と th:errors="*{name}" の項目名が、フォームのフィールド名と一致しているか確認します
入力したのに「住所(都道府県)を入力してください。」のようなエラーが出る
原因 入力した値が、Spring のフォームに届いていない。テンプレートの入力欄に th:field がなく値が送られていないか、フォームクラスの setter の引数名が違って送られた値を受け取れていない
対処 どちらの間違いかは、送られたフォームデータにその項目があるかを、付録D の方法で見て切り分けます。項目がなければテンプレート、あればフォームクラスを直します

セッション(第10〜12章)

症状・エラー表示
NotSerializableException(開発中は起きないことが多く、本番の複数サーバー構成などで起きる)
原因 セッションに保存するフォームが Serializable になっていない
対処 public class RegisterForm implements Serializable にします(第10章 10.4)
URL に ;jsessionid=... が付く
原因 セッションID を URL で扱う設定になっている
対処 application.properties に server.servlet.session.tracking-modes=cookie を追加します(第10章 10.3)
登録した直後に「戻る」で確認画面に戻り「登録」を押すと、一覧に戻る
原因 正しい動きです
対処 登録が終わるとセッションの入力内容は破棄されるため、二重登録を防ぐために一覧に戻しています(第11章 11.5)

B.6 Eclipse のトラブル

症状
プロジェクトに赤い × 印が付く
原因 ライブラリのダウンロードが途中で止まった、設定が古い など
対処 「ライブラリを取り直す」の手順で、ライブラリを取り直します
作業の途中で、急にたくさんのエラーが出る(import や @ の行がまとめて赤くなる)
原因 ダウンロード済みのライブラリのファイルが壊れた
対処 「ライブラリを取り直す」の手順で、ライブラリを取り直します
コードは正しいはずなのに、エラーが消えない(ライブラリを取り直しても直らない)
原因 Eclipse の設定やファイルが壊れている
対処 「Eclipse を入れ直す」の手順で、Eclipse を入れ直します
クラス名に赤い下線が引かれる(〜に解決できません)
原因 import が足りない
対処 赤い下線の語の末尾にカーソルを置いて Ctrl + Space を押し、候補から選び直します(import 文が追加されます)。同じ名前のクラスが複数ある場合は、jakarta.persistence・org.springframework などのパッケージ名を見て選びます(第4章)
コードを直して保存したのに、動きが変わらない
原因 アプリに変更が反映されていない
対処 コンソールの赤い四角でアプリを停止してから、もう一度起動します。ファイルを保存しただけでは、動いているアプリには反映されません
日本語が文字化けする(画面・メッセージ・ファイル)
原因 ファイルの文字コードが UTF-8 でない
対処 ファイル(またはプロジェクト)を右クリック → プロパティー → リソース で「テキスト・ファイルのエンコード」を「その他:UTF-8」にします
Spring スターター・プロジェクトの作成画面でエラーになる・先に進めない
原因 インターネットに接続できない(start.spring.io に接続できない)
対処 インターネットに接続されているか確認します。会社のネットワークでプロキシの設定が必要な場合は、ウィンドウ → 設定 → 一般 → ネットワーク接続 の設定について、ネットワークの管理者に相談してください
JUnit のバーが赤くなる
原因 テストが失敗した
対処 JUnit ビューで失敗したテストをクリックすると、下に原因が表示されます。expected: <3> but was: <2> なら「3件のはずが2件だった」という意味です。データの件数(第9章で削除した、COMMIT していない など)を確認します(第7章 7.3)
コンソールが見当たらない
原因 ビューを閉じてしまった
対処 ウィンドウ → ビューの表示 → コンソール で開き直します

ライブラリを取り直す(Maven プロジェクトの更新)

Maven は、ダウンロードしたライブラリを、パソコンの C:\Users\(ユーザー名)\.m2 というフォルダー(ローカル・リポジトリ)に保存しておき、次からはそれを使います。ダウンロードの途中で通信が切れたりしてここのファイルが壊れると、プロジェクトに赤い × 印が付いたり、急にたくさんのエラーが出たりします。そのようなときは、次の手順でライブラリを取り直します。

  1. プロジェクトを右クリック → Maven → プロジェクトの更新 を選びます。
  2. 「スナップショット/リリースの更新を強制」にチェックを入れて、「OK」を押します。

チェックを入れずに更新すると、壊れたファイルがそのまま使われ、直らないことがあります(第4章「ライブラリのダウンロードを待つ」)。

B.7 よくある打ち間違い・置き間違い

B.2〜B.6 はエラーの表示から原因を探す表でしたが、ここでは逆に、初めて作るときにやりがちな間違いから、どんな症状になるかをまとめました。エラーにならず、ただ動かないだけの間違いもあります。完成版(付録A)と見比べるときのチェックリストとして使ってください。

アノテーションの付け忘れ

間違いの例
Controller のクラスに @Controller がない
起きること 起動はするが、そのクラスの URL がすべて 404(B.3)
見つけ方
・直し方
クラス宣言の上の行を見ます。@Controller がないと、Spring はそのクラスを Controller として扱いません。送信は正しいのに 404 になることは、付録D の方法で確かめられます
メソッドに @GetMapping・@PostMapping がない
起きること その URL だけ 404
見つけ方
・直し方
メソッド宣言の上の行を見ます。送信は正しいのに 404 になることは、付録D の方法で確かめられます

ファイルの置き場所

間違いの例
Controller を com.example.employeeapp の外のパッケージ(com.example.other など)に作った
起きること 404。エラーは出ない
見つけ方
・直し方
パッケージ・エクスプローラーで、com.example.employeeapp の下にあるか見ます。Spring は、起動クラスがあるパッケージとその下しか探しません(第5章 5.2)
HTML を templates の外(static や src/main/java など)に作った
起きること Error resolving template(B.3)
見つけ方
・直し方
テンプレートは必ず src/main/resources/templates の下に置きます。employee フォルダーの中かどうかも見ます
list.html という名前の フォルダー を作り、その中に list.html を作った
起きること エラーにならず、画面に「list.html」という文字だけが表示される
見つけ方
・直し方
パッケージ・エクスプローラーで、アイコンがファイルかフォルダーかを見ます。新規作成のメニューで「フォルダー」と「ファイル」を取り違えると起きます

名前の中の空白と、つづり

間違いの例
ファイル名に空白が入っている(list .html、 list.html)
起きること Error resolving template
見つけ方
・直し方
空白は目で見つけにくいので、ファイルを右クリック → 名前変更で、名前をすべて消して入力し直します
@GetMapping("/employees ") のように、URL の引用符の中に空白が入っている
起きること 404
見つけ方
・直し方
引用符の中を見ます。見つけにくいので、その行を消して打ち直します
URL とテンプレート名を取り違える:URL は /employees だが、戻り値を "employees/list" と書いた
起きること Error resolving template [employees/list]
見つけ方
・直し方
この教材では、URL は employees(複数形)、テンプレートのフォルダーは employee(単数形)です。return の値はフォルダー名に合わせます
return "redirect"; のように、redirect: の後ろの URL がない
起きること Error resolving template [redirect]
見つけ方
・直し方
redirect: の後ろに、/ から始まる URL を書きます(return "redirect:/employees";)
return "redirect:employees"; のように、URL の先頭の / がない
起きること 404。アドレスバーが /employees/3/employees のような、おかしな URL になる
見つけ方
・直し方
/ がないと「今の URL からの相対」と解釈されます。redirect:/employees のように / から書きます。実際のリダイレクト先は、付録D の方法で確かめられます

import の間違い

間違いの例
別のパッケージにある Employee や RegisterForm を import していない
起きること Eclipse でクラス名に赤い下線「Employee を型に解決できません」。起動できない
見つけ方
・直し方
B.6 の手順で import を追加します
候補を選び間違えて、Model を ch.qos.logback.core.model から import した
起きること クラス名の赤い下線は消えるが、model.addAttribute に赤い下線「メソッド addAttribute(...) は型 Model で未定義です」が出る。起動できない
見つけ方
・直し方
ファイルの先頭の import 文を見ます。この教材で使うのは org.springframework.ui.Model です。候補が複数出たときは、パッケージ名が org.springframework で始まるものを選びます

Thymeleaf の書き損じ

間違いの例
th;href=、th:actio=、th:href"@{...}"(= がない)
起きること エラーにならず、ただの属性として無視される。リンクを押しても移動しない、フォームが別の URL に送られる、など
見つけ方
・直し方
Chrome の「ページのソースを表示」で、th: や th; がそのまま残っていれば、Thymeleaf に処理されていない証拠です。その属性のつづりと = を見直します。送信先の URL は、付録D の方法でも確かめられます
th: href=(th: の後ろに空白)
起きること An error happened during template parsing、Attribute name cannot be null or empty(B.3)
見つけ方
・直し方
行番号が出ないので、そのテンプレートの th: をすべて見直します
@{/employees/register のように } が抜けている
起きること An error happened during template parsing、Could not parse as expression(B.3)
見つけ方
・直し方
コンソールに出るテンプレート名と行・列の位置を見ます

B.8 それでも解決しないとき

このページに載っていないエラーや、対処しても直らないエラーに出会うこともあります。そのときは、次の順で進めましょう。

  1. エラーメッセージの全文をコピーする
    コンソールを右クリック →「すべて選択」→「コピー」で、メモ帳などに貼り付けて保存します。一部だけでなく全文を残すのがポイントです。
  2. 何をしたら起きたかをメモする
    「どのファイルを変更したか」「どのボタンを押したか」「その前は動いていたか」を書き出します。直前に変更した箇所が原因であることがほとんどです。
  3. 完成版と見比べる
    この教材の完成版ソースコード(付録A)と、自分のコードを1行ずつ見比べます。つづりの違い、大文字・小文字、かっこやセミコロンの抜けがよくある原因です。
  4. ライブラリを取り直す
    コードに間違いが見つからないのに、急にたくさんのエラーが出るときは、ライブラリのファイルが壊れていることがあります。B.6 の「ライブラリを取り直す」の手順で、取り直してみます。
  5. エラーメッセージで検索する
    ORA- の番号や、英語のエラー文の特徴的な部分で検索すると、同じエラーに出会った人の情報が見つかることがあります。
  6. 周りの人に聞く
    1〜5 をやっても分からなければ、周りの人に相談しましょう。そのとき、次のことを伝えると、相手も原因を見つけやすくなります。

【便利な使い方】質問するときに伝えること

  • 何をしようとしていたか(例:第11章の「登録」ボタンを押した)
  • 何が起きたか(エラーメッセージの全文、画面の様子)
  • 自分で何を試したか(例:URL のつづりは確認した、再起動した)

【便利な使い方】エラーは成長のチャンス

エラーを自分で読んで直した経験は、そのまま実力になります。現場でも、エラーメッセージを落ち着いて読み、原因を絞り込んでいく力はとても大切です。すぐに答えを探す前に、まずメッセージを読んでみましょう。

Eclipse を入れ直す

ここまでの手順を試しても、コードは合っているはずなのにエラーが消えず、B.6 の「ライブラリを取り直す」をやっても直らないときは、Eclipse の設定やファイルが壊れていることがあります。そのようなときは、作ったプロジェクトを残したまま、Eclipse(Pleiades)だけを入れ直すと直ることがあります。

【ご注意】workspace フォルダーは削除しない

作ったプロジェクトは、すべて C:\pleiades\2026-09\workspace の中にあります。このフォルダーを削除すると、プロジェクトも消えてしまいます。削除する前に、消してよいのが workspace 以外 のものであることを、もう一度確かめてください。

  1. Eclipse を終了します。
  2. 念のため、C:\pleiades\2026-09\workspace フォルダーを、デスクトップなど別の場所にコピーしておきます。
  3. C:\pleiades\2026-09 フォルダーを開き、workspace 以外のフォルダーとファイルをすべて削除 します。フォルダー名の 2026-09 は、ダウンロードした Pleiades の版によって変わります(2026-12 版なら 2026-12)。
  4. ダウンロードした Pleiades を、もう一度 C:\pleiades\2026-09(前と同じ場所)に展開します(「開発環境の準備」4「展開(インストール)」)。
  5. Eclipse を起動し、ワークスペースは今までと同じ ../workspace を選びます。プロジェクトがそのまま表示されます。
  6. B.6 の「ライブラリを取り直す」の手順を、もう一度行います。

前へ

付録A 完成版ソースコード

次へ

付録C Eclipse 操作早見表・用語集

目次へ

【Spring入門】Webアプリを作りながら学ぶ

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?