trouble shooting

EclipseのXMLエディタ一行目でDTDエラー「参照ファイルにエラーが含まれています」

投稿日:2019年7月10日

事象

checkstyleのルールXMLをEclipseで開くと一行目にエラーマーク。

カーソルを合わせた時のメッセージ。

XMLのデータ構造整合性をチェックするDTD(Data Type Definition)がおかしい?

参照ファイルにエラーが含まれています 
(http://checkstyle.sourceforge.net/dtds/configuration_1_3.dtd)。
 For more information, right  click on the message in the Problems View and select "Show Details..."

DTDのURLにブラウザでアクセスすると正しい.dtdファイルが普通に落ちてくるので初見では「?」となります。

原因

EclipseのXMLエディタはDTDを落としに行って、初っ端リクエストで200以外が帰ってきた時はエラーにする仕様の為です。

今回はsourceforge.net → sourceforge.ioへと301リダイレクトが2回応答され、3回目のcheckstyle.orgでようやく200が帰ってきている通信内容でした。

1:http://checkstyle.sourceforge.net/dtds/configuration_1_3.dtd (301 : Move Permanently)
2:https://checkstyle.sourceforge.io/dtds/configuration_1_3.dtd (301)
3:https://checkstyle.org/dtds/configuration_1_3.dtd (200)

対処

最初からDTDのURLを、HTTPステータス200を返してくれるURL、この場合だと3回目のリクエストの「https://checkstyle.org/dtds/configuration_1_3.dtd」にしておくことで解消されます。

まとめ

この事象はEclipse初期から存在しています。

リダイレクトが終わるまで待っててくれてもいいんじゃないですかEclipseさん、とずっと思っていたけど出来るだけ早くリダイレクト先に移行しておいた方がいいですし、ローカルDTDを参照するのも新版に追従出来ていない感があるので割り切るようにしていました。

とは言えメッセージから内容が伝わり難いことは間違いなく、初見で遭遇するとなんでやねん状態になること請け合いです。

301が帰ってきたら「リダイレクトが返却されました。https://~~にDTDのURLを変更してください。」とかメッセージを出すくらいのサービス精神があってもいいんじゃないかなぁ、と思っていますが、XML自体がオワコン風潮ですから改善を期待するよりエラーナレッジを持っておく方が現実的な対処かも。

-trouble shooting
-, ,

執筆者:

関連記事

Angular4.4のHTTP通信処理にタイムアウトを設定をすると「timeout is not a function」エラーが発生する

目次1 事象2 原因3 対処4 まとめ 事象 Angular4.3で追加されたHttpClientModuleに移行せず、HttpModuleを使い続けているアプリで、とある理由からpackage-l …

キャッシュされているはずのServiceWorker資源にオフラインアクセス出来ない(Workbox + ionicons)

そのHTTPリクエストしたファイル資源、ひょっとしてURLパラメータついてたりしませんか? 目次1 事象2 原因3 対処 事象 ionic3(SPA)でWorkboxを使ったServiceWorker …

nvm-windows1.1.6でNode.jsを入れようとするとnpmコマンドのインストールがエラーになる

目次1 事象2 原因3 対処4 まとめ 事象 Win10、nvm-windows 1.1.6環境下でNode.js 10.16.0を入れようとした際に以下のエラーが発生。 C:\src\js\angu …

ERROR: Several keys given – pgcrypto does not handle keyring、またはERROR: Corrupt ascii-armor

gpgキーストアに同じUIDで複数の鍵ペアを登録してしまうと、ファイルにexportした際に1ファイルに複数の鍵情報が入ってしまい、1ファイル1鍵を期待しているpgcryptoに怒られます。 目次1 …

java.security.InvalidKeyException: IOException : DerInputStream.getLength(): lengthTag=111, too big.

目次1 事象2 原因3 対処4 得た教訓 事象 OpenSSLで作成した秘密鍵をJava(Eclipse + Maven環境)で読み込み、公開鍵で暗号化されたデータを復号しようとした際に例外が発生しま …

 

shingo.nakanishi
 

東京在勤、1977年生まれ、IT職歴2n年、生涯技術者として楽しく生きることを目指しています。デスマに負けず健康第一。