Корень проблемы, похоже, кроется в Oracle и заботе о безопасности, что побудило недавно перейти на протокол HTTPS.
XMLMetaDataParser в org.apache.openjpa.lib.meta использует SaxParser для чтения XML-файлов в методе parseNewResource, который выдает преждевременную ошибку конца файла. Текст ошибки не особенно информативен. Однако обращение к редактору XML Copy [http://xml -copy-editor.sourceforge.net] для проверки схемы выявляет фактически возникшую ошибку:
Неустранимая ошибка в строке 0, столбце 0: неподдерживаемый протокол в URL. Эта информация, в конечном счете, привела меня к этому посту с участием OpenEdge от 6.11.2008: [https://knowledgebase.progress.com/articles/Article/Unsupported-protocol-in-URL-reading-XML-from-a-URI].
В разделе «Причина» говорится: «URL-адрес, который использовался ранее для HTTP, теперь перенаправляется на HTTPS».
А в разделе «Разрешение:« Это ограничение внутри анализатора Apache Xerces, которое использует клиент OpenEdge для внутреннего использования. У него ограниченная поддержка URL-адресов, поэтому анализатор не может обрабатывать перенаправление URL-адресов или HTTPS-URL, аналогичные веб-браузеру ».
Таким образом, значительная часть текста xml, обозначенного в сообщении об ошибке как «systemId», представляет собой оператор протокола http, который теперь перенаправляется на https на веб-сайте Oracle, вызывая ошибку синтаксического анализа. Это объясняет, почему код, который работал отлично, однажды внезапно перестал работать на следующее утро. То, сколько реализаций ORM имеют это ограничение, должно быть известно довольно быстро.
Проблема решена. Я заменил
https://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd
с
https://www.oracle.com/webfolder/technetwork/jsc/xml/ns/persistence/persistence_2_1.xsd
и программа теперь собирает нормально.