約5年ほど前から、たまに保守をしているWebシステムがありまして、
今回新しく私の開発端末を別機種に変更することになり、新しい端末にて環境構築した際、
表題のエラーがEclipse上で表示され、コンパイルできずに四苦八苦していました。
とりあえず、解決したので備忘録かねて記載いたします。
環境
以下の環境です。(古いシステムなので、環境も古いです)
- OS: Windows10 Professional
- Eclipse: Juno
- レームワーク:Spring MVC
- ajax用:DWR(Direct Web Remoting) ← 今回の問題
エラー内容
dwr設定ファイル(xmlファイル)にて、以下のエラーがEclipse上で表示される
- schema_reference.4: スキーマ文書 'http://www.directwebremoting.org/schema/spring-dwr-2.0.xsd' を
読み取ることに失敗しました。原因は、1) 文書が見つかりませんでした、2) 文書の読み取りができませんでした、3) 文書のルー
ト要素が xsd:schema でありません。- cvc-complex-type.2.4.c: 一致しているワイルドカードは精密ですが、要素 'dwr:controller' の宣言が見つかり
ません。
状況
現行端末では同じ設定ファイルでエラーがなく動いているが、新しい端末では上記エラー発生。
また、現行端末でも同じ設定ファイルを利用し、新しく環境を構築試用とすると、同じエラーが発生。
だめな対応達
googleさんで検索すると、同じ現象にあっている人が多数いるようで、色々出てきました。
×(対応1)eclipseのxmlカタログに、上記スキーマ文書をダウンロードして読み込ませる
⇒本対応を実施してもエラーの表示は消えませんでした。(やり方が悪かったかも)
参照元:(stackoverflow)Why can't Eclipse resolve the spring-dwr schema?
×(対応2)スキーマ文書の書き方が間違っている
xsi:schemaLocation== "http://www.directwebremoting.org/schema/spring-dwr(I had slash here before)"
とのこと。上記部分を確認すると、上記の記載になっているため、問題なし。
参照元:(coderanch)Configuration problem with DWR and Spring
×(対応3)本家サイトの設定を一旦そのまま適用してみる
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:dwr="http://www.directwebremoting.org/schema/spring-dwr" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd http://www.directwebremoting.org/schema/spring-dwr http://www.directwebremoting.org/schema/spring-dwr-3.0.xsd">
本家サイトのリファレンスを参照し、設定をそのまま適用してみましたが、エラーは変わらず。
参照元:(DWR and Spring)Step 2 - Configure DWR's remoting
他も参照してみましたが、解決せず。
今回の正解の対応
現在の私の環境の設定ファイルはもともと以下のような設定になっていました。
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:dwr="http://www.directwebremoting.org/schema/spring-dwr" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.directwebremoting.org/schema/spring-dwr http://www.directwebremoting.org/schema/spring-dwr-2.0.xsd">
エラー内容では、http://www.directwebremoting.org/schema/spring-dwr-2.0.xsd の参照に失敗しているので、ブラウザから上記URLでアクセスすると通常に参照できることを確認。
ただ、URLを確認すると、http://www.directwebremoting.org/schema/spring-dwr/spring-dwr-2.0.xsdにリダイレクトされているっぽい。
なので、リダイレクト先のURLを設定ファイルに反映してみました。
・・・うん。エラーが消えない。
でも、これまでの調査してきた中で、「www」を削除しているサイトもあったので、だめもとで削除。
・・・エラーが消えて、無事コンパイルできました!
最終的には、以下の設定で無事動作確認がとれました。
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:dwr="http://www.directwebremoting.org/schema/spring-dwr" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.directwebremoting.org/schema/spring-dwr http://directwebremoting.org/schema/spring-dwr/spring-dwr-2.0.xsd">
細かい原因はひとまずおいておいて、同じ問題にぶつかった方の参考になれば幸いです。