ベンダーアプレットを使用しています。アプレットはJRE 1.4.2_Xと1.6.Xでは正常に動作しますが、1.5.Xのすべてのバージョンでは失敗します。 1.6で実行することは、Java 6ではうまくいきませんが、別のアプリケーションの競合のためにオプションではありません。Java 5はDTDを検証しません
私が信じる問題は、DTDが検証されていないということです。これは、 "宣言されていない"問題と結果のnullポインタを引き起こしています。
Error: Fri Aug 28 11:21:29 EDT 2009 org.xml.sax.SAXParseException:
Element type "UserSessionList" is not declared.
java.lang.NullPointerException
デフォルトの検証クラスを変更しようとしましたが、問題は変わりません。
-Djavax.xml.validation.SchemaFactory:http://relaxng.org/ns/structure
/1.0=org.apache.xerces.jaxp.validation.XMLSchemaFactory
私はこれに使用できる別の検証はありますか?
アプレットがベンダーからの人生を超えているコードを変更するオプションはありません。そのため、サポートを得ることはまずありません。したがって、コードを変更しても、それを所有していないため回避策には使用できません。
ポイント1:JDK 1.5はDTDを検証します。私はそれができなければ失敗するプログラムをたくさん持っています。 – kdgregory
ポイント#2:エレメントタイプが実際にDTDに対して妥当性が確認され、XMLにDTDの一部ではない要素があるか、DTD内部的に一貫性がありません(エラーメッセージの原因を見ていない)。 – kdgregory
ポイント#3:Sun JDK(とJRockitも、私が信じている)は既にXercesを使用しています。したがって、Xercesディストリビューションではなく、JDKディストリビューションでは修正されていない特定のバグがない限り、別のバリデーターを設定することはあなたを助けません。 – kdgregory