Ошибка задачи JAXB Ant: xjc2 [ERROR] null неизвестное местоположение

При привязке к некоторым допустимым XML-документам с помощью задачи Ant xjc2 я получаю следующее сообщение об ошибке:

[xjc2] [ERROR] null
[xjc2] unknown location

Документы очень похожи на другие файлы, которые успешно связаны, все импортированные схемы существуют. Запуск xjc в подробном режиме произвел:

Parent is not Defined Class...I cannot get the fields from this class

Кто-нибудь знает, что это значит?


person Tom Tresansky    schedule 13.08.2010    source источник


Ответы (1)


Проверка правильности схемы

При использовании XJC мы наблюдали аналогичную проблему (см. ссылку ниже), которая была решена путем отключения проверки правильности схемы:

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

-Dcom.sun.tools.xjc.api.impl.s2j.SchemaCompilerImpl.noCorrectnessCheck=true

Для муравья попробуйте:

<xjc target="src">
  <schema dir="src" includes="**/*.xsd" excludes="**/debug.xsd"/>
  <arg value="-nv" />
</xjc>

На следующей странице параметр -nv относится к проверке правильности схемы:

Познакомиться с кодом

Вы можете попробовать программно взаимодействовать с XJC (см. ниже) и подключить свой собственный EntityResolver, чтобы увидеть, где происходит сбой импорта/включения:

import com.sun.codemodel.*;
import com.sun.tools.xjc.*;
import com.sun.tools.xjc.api.*;

SchemaCompiler sc = XJC.createSchemaCompiler();
sc.setEntityResolver(new YourEntityResolver());
sc.setErrorListener(new YourErrorListener());
sc.parseSchema(SYSTEM_ID, element);
S2JJAXBModel model = sc.bind();
person bdoughan    schedule 16.08.2010
comment
Я попытался передать этот аргумент задаче xjc2 как ‹arg value=-Dcom.sun.tools.xjc.api.impl.s2j.SchemaCompilerImpl.noCorrectnessCheck=true /›. Я добавил его как дочерний к узлу ‹xjc2› (рядом с другими моими аргументами). Я получил следующую ошибку: нераспознанный параметр -Dcom.sun.tools.xjc.api.impl.s2j.SchemaCompilerImpl.noCorrectnessCheck=true - person Tom Tresansky; 16.08.2010
comment
Я обновил свой ответ. Параметр -nv в задаче ant относится к проверке правильности схемы. - person bdoughan; 16.08.2010
comment
Параметр -nv работает, однако ошибка остается. Я также использовал внешний инструмент для проверки схемы без проблем, поэтому я не думаю, что проблема здесь. Кроме того, я запускаю задачу ‹xjc2›, а НЕ ‹xjc› (хотя параметр все еще работает). - person Tom Tresansky; 16.08.2010
comment
Есть вероятность, что проблема с прокси? Я попытался воспроизвести вашу проблему, отключив прокси-сервер HTTP в своей среде, и я получаю сообщение об ошибке, но оно отличается от вашего, но, вероятно, стоит попробовать. Я добавил некоторые подробности о том, как программно получить доступ к XJC. Если вы передадите свой собственный EntityResolver, вы можете лучше понять, какая схема вызывает сбой. - person bdoughan; 20.08.2010
comment
Следующая тема может быть полезной. Это говорит о том, что хеш-символ «#» в URI вызывает неизвестную ошибку местоположения. old.nabble.com/xjc-2.2-and- хэш-символ-td26957314.html - person bdoughan; 20.08.2010
comment
Решил! Сочетание проблем, способных отследить их по ссылке и вашим предложениям по программному запуску! Большое спасибо за всю вашу помощь, вы определенно заслужили эту награду! - person Tom Tresansky; 22.08.2010