0

ベンダー アプレットを使用しています。アプレットは JRE 1.4.2_X および 1.6.X では正常に動作しますが、1.5.X のすべてのバージョンで失敗します。1.6 で実行することは、Java 6 では適切に機能しない別のアプリケーションの競合のため、オプションではありません。

私が考える問題は、DTD が検証されていないことです。これにより、「宣言されていない」問題が発生し、結果として nullpointer が発生します。

 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

これに使用できる別の検証はありますか?

アプレットのコードを変更するオプションがベンダーから提供されていないため、ベンダーからサポートを受けることはほとんどありません。したがって、コードを所有していないため、回避策としてコードを変更することはできません。

4

3 に答える 3

1

現在のバージョンの Xerces をクラスパスに入れてみて、それらの -D をすべて取り除いてください。Xerces の SPI はこれらすべてを引き継いで、より適切に動作する可能性があります。

于 2009-09-06T12:55:39.327 に答える
0

既存のすべてのコードを変更せずにアプレットをデプロイし、実行するJavaのバージョンを指定できます。classidこれを行うには、次のようにアプレットでパラメータを宣言します。

<OBJECT
    classid="clsid:CAFEEFAC-0014-0002-FFFF-ABCDEFFEDCBA"
    width="200" height="200">
    <PARAM name="code" value="Applet1.class">
</OBJECT>

classidsJavaの最後の4つのメジャーリリースには違いがあります

1.3使用CAFEEFAC-0013-0001-FFFF-ABCDEFFEDCBA1.4
使用CAFEEFAC-0014-0002-FFFF-ABCDEFFEDCBA1.5
使用CAFEEFAC-0015-0000-FFFF-ABCDEFFEDCBA1.6
使用CAFEEFAC-0016-0000-FFFF-ABCDEFFEDCBA

注意点は、クライアントマシンにそのバージョンのJavaがインストールされている必要があるということですが、JREはSunのサイトで引き続き利用できます。詳細はこちら: http: //java.sun.com/javase/6/webnotes/family-clsid.html

したがって、アプレットを実行するのは1.4のみであり、エンドユーザーがアプレットを実行するための1.4を持っている限り、別のバージョンのJavaがインストールされているかどうかは関係ありません。

于 2009-08-31T14:14:29.497 に答える
0

Java 1.5で使用すると、Xercesにバグが存在する可能性があるようです。このTomcatのバグに関する最後のコメントを参照してください。

于 2009-11-12T01:24:24.170 に答える