cvc-elt.1: не удается найти объявление элемента 'server' - только проблема в IBM Java 8
Я тестирую наше программное обеспечение с несколькими версиями Java 8. Оно отлично работает с RedHat и Zulu, но с IBM 8 Java выдает следующее исключение:
org.springframework.beans.factory.xml.XmlBeanDefinitionStoreException:
Line 1 in XML document from file
[C:\xxxx\image-server\.\res\conf\temp.xml] is invalid;
nested exception is org.xml.sax.SAXParseException:
cvc-elt.1: Cannot find the declaration of element 'server'.
Файл temp.xml выглядит следующим образом:
<?xml version="1.0" encoding="UTF-8"?><server id="myServer" max-logins="100" xmlns:beans="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://mina.apache.org/ftpserver/spring/v1 http://mina.apache.org/ftpserver/ftpserver-1.0.xsd">
<listeners>
<nio-listener name="default" port="21">
<ssl>
<keystore file="./res/ftpserver.jks" password="password"/>
</ssl>
</nio-listener>
</listeners>
<ftplets>
<ftplet name="ImagePilot">
<beans:bean class="com.xxxx.svp.imagepilot.ImagePilot">
<beans:property name="createThumbNailEnabled" value="true"/>
<beans:property name="defaultStoreToRoot" value="false"/>
<beans:property name="defaultRootDirectory" value="d:/images"/>
<beans:property name="scaleFactor" value="4"/>
<beans:property name="copyThumbNails" value="false"/>
<beans:property name="imageFileNameHandler">
<beans:bean class="com.xxxx.svp.imagepilot.XxxxImageFileNameHandler">
<beans:constructor-arg>
<beans:value>^[a-zA-Z0-9\-]+_\d{8}_\d{6}_\d{8}\.(jpg|JPG|xml|XML|bmp|BMP)</beans:value>
</beans:constructor-arg>
<beans:property name="maxDelayedImageData" value="350"/>
</beans:bean>
</beans:property>
</beans:bean>
</ftplet>
</ftplets>
<file-user-manager file="./res/conf/icr890usersfile.properties"/>
</server>
Есть идеи, в чем может быть проблема? Почему только реализация IBM?
Редактировать: дополнительная информация
Элемент "server", который не найден, взят из проекта apache mina.
https://mina.apache.org/ftpserver-project/configuration_server.html
<server xmlns="http://mina.apache.org/ftpserver/spring/v1"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://mina.apache.org/ftpserver/spring/v1 http://mina.apache.org/ftpserver/ftpserver-1.0.xsd"
id="server"
max-logins="500"
anon-enabled="false"
max-anon-logins="123"
max-login-failures="124"
login-failure-delay="125">
...
</server>
Похожая (но не та же) ошибка появляется в отчете об ошибках для mina ftp:
https://issues.apache.org/jira/browse/FTPSERVER-458
Комментарий к этому был:
"Схема находится в ftpserver-core-1.0.6.jar/org/apache/ftpserver/config/spring/ftpserver-1.0.xsd.
Это проблема конфигурации, элемент ftplets должен быть размещен перед file-user-manager."
Интересно, это проблема classpath или загрузки классов, так как xsd находится в jar-файле.
0 ответов
Это как-то связано с тем, как динамически генерируются XML-файлы. Кажется, что при запуске с IBM Java серверный тег файла конфигурации XML не имеет перевода строки между ним и заголовком, поэтому анализатор не видит серверный тег.
При запуске с другими Javas, перевод строки там, и никаких проблем.
Мой следующий шаг - перекомпилировать модуль с IBM JDK и посмотреть, работает ли он тогда. К сожалению, он не компилируется, но это другой вопрос.