【エラー解決方法】cvc-complex-type.2.3: Element ‘*****’ cannot have character [children], because the type’s content type is element-only. pom.xml

こんにちは。飯塚です。
 
最近、自社サービスのCODEMATICを改良しているのですが、開発中に出たpom.xmlのエラー解消方法をブログにまとめました。pom.xmlのエラーは焦りますし、普段見慣れないエラーなので解決に15分かかりました。同じエラーで悩んでいる方の参考になれば幸いです。

エラー再現環境

項目 詳細
OS Windows 11
言語 Java 11
IDE Eclipse 2023-12 (4.30.0)
プロジェクト管理ツール Maven

エラー内容:「cvc-complex-type.2.3: Element ‘*****’ cannot have character [children], because the type’s content type is element-only. pom.xml」

pom.xmlを編集中に下記のエラーが表示されることがあります。

端的には、XMLの構文エラーという意味です。
 
「cvc」は”Content Validation Constraint” (コンテンツ検証制約) の略称で、「cvc-complex-type」は「XML Schemaで定義された複合型(complex type)の制約に違反している」場合にエラーメッセージとして表示されるようです。

原因:XMLの構文誤り

上記の通り、XMLの構文エラーが原因で、一般的には下記のような可能性が考えられます。

  1. 要素タグ間に余分な空白や改行が入っている
  2. 要素内に不要なテキストが入っている

今回のサンプルでは、あえて全角スペースを加えることでエラーを発生させました。pom.xmlをに編集中に何かの拍子で全角スペースや余計な文字を入れて保存してしまった、というのが実業務でもありえそうですね。
 
他にはファイルにBOMがついていたので削除すれば直った、というケースもあるようです。
 
ちなみに補足ですが、似たエラーとして下記もあります。開始タグと閉じタグが揃っていない場合に発生するようです。

XMLプロジェクト・ビルド・エラー: Non-parseable POM 【プロジェクトのパス】\pom.xml: TEXT must be immediately followed by END_TAG and not START_TAG (位置: START_TAG seen ...

解決法:XMLの構文エラーを修正する

上記の通り、誤入力を修正すれば解消します。誤入力を目視で探すのは大変なので、修正前と差分を比較するのが手っ取り早いでしょう。
 
修正後、ファイルの変更を保存するだけで解消するはずですが、エラーが消えない場合は「Mavenプロジェクトの更新」やEclipseの再起動を試してみてください。

まとめ

いかがでしょうか。
 
知っていれば瞬殺できるタイプのエラーですが、初めて見ると意外と解決までに時間がかかるかもしれません。今後も環境構築エラー系のブログを書こうと考えておりますので、エラーが発生したときはぜひご覧ください。
 
 
 
 
《関連記事》

【エラー解決方法】Maven プロジェクト・ビルダー の実行中にエラーが発生
技術
2015.6.18(Thu)

【エラー解決方法】Maven プロジェクト・ビルダー の実行中にエラーが発生

#Java

【エラー解決方法】JRE or JDK must be available in order to run Eclipse を解決する方法
技術
2023.3.24(Fri)

【エラー解決方法】JRE or JDK must be available in order to run Eclipse を解決する方法

#Java#ツール

【エラー解決方法】Tomcat起動時に「重大: 以前のエラーのためにコンテキストの起動が失敗しました」が発生したときの対処法
技術
2024.7.9(Tue)

【エラー解決方法】Tomcat起動時に「重大: 以前のエラーのためにコンテキストの起動が失敗しました」が発生したときの対処法

#Java#技術

記事をシェア
MOST VIEWED ARTICLES