Java

Springのxmlで「属性指定 > または /> のいずれかがなければなりません。」が出た

全ての結論

そのxmlコピペしました?

これに尽きます。

事象

Springのpp-context.xmlで以下のエラーが発生しておりました。

説明 リソース パス ロケーション タイプ
要素タイプ "beans:beans" の後に属性指定 ">" または "/>" のいずれかがなければなりません。 app-context.xml

このXMLは別のプロジェクトで使っていたものの内容をコピーして移植したものです。

で、元のプロジェクトではこのXMLは正しく動いています。

以下はそのXML(エラーありの方)

<beans:beans
    xmlns:beans="http://www.springframework.org/schema/beans"
    xmlns:jpa="http://www.springframework.org/schema/data/jpa"
    xmlns:mvc="http://www.springframework.org/schema/mvc"
    xmlns:context="http://www.springframework.org/schema/context"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:aop="http://www.springframework.org/schema/aop"
    xmlns:tx="http://www.springframework.org/schema/tx"
    xsi:schemaLocation="
        http:&#47;&#47;www.springframework.org/schema/beans
        https://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/mvc
        https://www.springframework.org/schema/mvc/spring-mvc.xsd
        http://www.springframework.org/schema/context
        https://www.springframework.org/schema/context/spring-context.xsd
        http://www.springframework.org/schema/data/jpa
        http://www.springframework.org/schema/data/jpa/spring-jpa.xsd
        http://www.springframework.org/schema/aop
        http://www.springframework.org/schema/aop/spring-aop.xsd
        http://www.springframework.org/schema/tx
        http://www.springframework.org/schema/tx/spring-tx.xsd">

原因

先に書いた通り、コピペに原因があります。

なんとこれ。
「スペースに見える部分がスペースじゃなくなっていて、結果としてEclipseがエラーしている」ということになります。

ASCIIコードとか細かい話は省略しますが、エラーしているxmlをスペースで検索してみてください。

xmlns:beanタグの字下げなどで、スペースじゃないところがあるはずです。
スペースに見えるけどスペースじゃない文字が入っています。

反対に、スペースに見えるけどスペースじゃないところから1文字の空白をコピペして検索してみてください。
今度は逆にスペースの方が引っ掛からなくなります。

下の画像の青字でフォーカスされたところが、おかしなスペースです。見た目の違いはありません。

Springのxmlで「属性指定 > または /> のいずれかがなければなりません。」が出た

対応

ということで、今回の対応は「正しくないスペースを正しいスペースに置換する」ということになります。

具体的な話

私のPCはMacBook Pro13インチ 2018年モデルなので、環境としてはその前提で。
CotEditorで文字コードを見てみました。

「スペースに見えるけどスペースじゃない」ところをエディタに貼り付けて確認すると「0x00A0」となっています。
コピペではなく、Eclipse上で入力した「スペース」の文字コードは「0x0200」でした。

見た目はどちらもスペースですが、実際のデータは違うようです。
0x00A0を全て痴漢するとエラーが解消しましたという話です!

###############お知らせ################
ブログランキングのITカテゴリに参加してみました。
この記事が役に立ったなどお力になれたら、 このバナーを押していただけると嬉しいです。

#####################################

-Java