Java 5 не проверяет DTD - PullRequest
       20

Java 5 не проверяет DTD

0 голосов
/ 31 августа 2009

Я работаю с апплетом вендора. Апплет прекрасно работает с JRE 1.4.2_X и 1.6.X, но не работает на каждой версии 1.5.X. Запуск с 1.6 не возможен из-за другого конфликта приложений, который не очень хорошо работает с Java 6.

Проблема, которую я считаю, заключается в том, что DTD не проверяется. Это вызывает проблему «не объявлено» и приводит к нулевому указателю.

 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

Есть ли еще одна проверка, которую я могу использовать для этого?

На самом деле у меня нет возможности изменить код, который апплет истекает у поставщика, поэтому получение поддержки от них маловероятно. Поэтому любые обходные пути не могут включать изменение кода, поскольку мы не владеем им.

Ответы [ 3 ]

1 голос
/ 06 сентября 2009

Попробуйте поместить текущую версию Xerces в классовую дорожку и избавьтесь от всех этих -D. SPI в Xerces возьмет на себя все это и может вести себя лучше.

0 голосов
/ 12 ноября 2009

Похоже, что в Xerces могла быть ошибка при использовании с Java 1.5. См. Последний комментарий к этой ошибке Tomcat.

0 голосов
/ 31 августа 2009

Вы можете развернуть апплет со всем существующим кодом без изменений и указать, под какой версией Java он выполняется. Это можно сделать, объявив параметр classid с помощью апплета, например:

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

Существуют разные classids для последних четырех основных выпусков Java

1,3 использовать CAFEEFAC-0013-0001-FFFF-ABCDEFFEDCBA
1,4 использовать CAFEEFAC-0014-0002-FFFF-ABCDEFFEDCBA
1,5 использовать CAFEEFAC-0015-0000-FFFF-ABCDEFFEDCBA
1,6 использовать CAFEEFAC-0016-0000-FFFF-ABCDEFFEDCBA

Предостережение заключается в том, что на клиентском компьютере должна быть установлена ​​эта версия Java, но JRE по-прежнему доступны на сайте Sun. Больше информации здесь: http://java.sun.com/javase/6/webnotes/family-clsid.html

Таким образом, вы можете указать, что ваш апплет запускает только 1.4, и не имеет значения, если у конечного пользователя установлена ​​другая версия Java, если у него есть 1.4 для запуска вашего апплета.

...