2009-07-27 6 views
5

私は、rt.jar内の**。internal。** apache xercesクラスを直接使用している従来のWebアプリケーションをサポートしていません。私は履歴は、明示的にxercesを使用するために使用され、xerces jarのjava5使用への移行が中止され、これらのクラスが内部のとしてrt.jarから参照されたときに、このコード(java1.4に戻る)等価物。rt.jarの内容は、異なるJVMベンダー間で変更されますか?

私はこのプロジェクトをさまざまなWebコンテナで実行することによる影響がどのようなものか理解しています(WebsphereとTomcatなど)。

  • rt.jarはSUNまたはJVM/JREベンダーから提供されていますか?
  • 代替ベンダーは内部的にxercesを使用し続けているのですか、それとも他のXML実装がありますか?

このコードを標準のJava APIを使用するように変更する必要がある場合もありますが、問題の大きさを把握したいと思っていました。

おかげで、ロブ

答えて

2

はどこJVMの仕様やJava言語仕様のrt.jarでも言及されていないと、すべての*.internal.*パッケージは、明示的にAPIの一部ではないものとしてマークされています。

したがって、これらのいずれかを使用すると、JVMベンダーと実装バージョンにかなり直接結びついていると想定することは安全です。異なるベンダーが異なるXMLパーサーを使用できるだけでなく、XMLパーサー、XMLパーサーのバージョン、またはXMLパーサーが出荷されるパッケージを変更するときに、あるベンダー内でも問題が発生しやすくなります。

これらのパッケージはAPIではないため、これらはすべて完全に法的に変更されています。

既知の良いJVMの小さなセットに縛られていないのであれば、間違いなく標準のAPIを使用するか、Xercesを外部の依存関係として使用し、通常のorg.apache.xerces.*パッケージから使用する必要があります。

+0

上記の問題に関する簡単なフォローアップコメント:IBM JVMを使用してwebsphereで上記のコードをテストすると、期待どおりのクラスが見つかりませんでした。また、Websphereランタイムを介した検索の後、rt.jarの兆候が見つかりませんでした。 コードは、org.apache。**パッケージを明示的に使用するように書き直されました。 – RobLucas

関連する問題