Связывание в JIBX

Привет, я только начал использовать JIBX, и мне трудно понять концепцию Binding. Я сгенерировал классы JAVA из XSD-файла. Я использую Windows, и вот как мои папки являются структурами.

d:\Libraries\ Эта папка содержит загруженную папку jibx, поэтому библиотеки rar, такие как jibx-tools.jar, находятся в каталоге d:\Libraries\ jibx \ lib.....

Теперь папка "Библиотеки" также содержит папку с именем dwcode2. У меня есть XSD-файл с именем starter.xsd в D:\Libraries\jibx\dwcode2\

Я сгенерировал файлы JAVA, используя команду в DOS D:\Libraries\jibx\dwcode2>java -cp ..\lib\jibx-tools.jar org.jibx.schema.codegen.CodeGen -t gen\src -w starter. XSD

в результате файлы JAVA были сгенерированы в D:\Libraries\jibx\dwcode2\gen\src\org\jibx\

и binding.xml был создан в D:\Libraries\jibx\dwcode2\ gen \ src

Теперь я хочу скомпилировать и связать файл (кто-нибудь также может сказать мне, почему мы должны компилировать и связывать XML). Поэтому я сделал следующее: D:\Libraries\jibx\dwcode2\gen\src>java -jar "D:\ Библиотеки Java "\jibx\lib\jibx-bind.jar binding.xml

Error: Unable to find type org.jibx.starter.Shipping; on format element at (line 3, col 66, in binding.xml)Error: Cannot find information for class org.jibx.starter.Item; on mapping element at (line 4, col 79, in binding.xml)Error: Cannot find information for class org.jibx.starter.Address; on mapping element at (line 9, col 85, in binding.xml) Error: Cannot find information for class org.jibx.starter.Customer; on mapping element at (line 17, col 87, in binding.xml)Error: Cannot find information for class org.jibx.starter.Order; on mapping element at (line 22, col 81, in binding.xml) Error: Cannot find information for class org.jibx.starter.Order; on mapping element at (line 35, col 56, in binding.xml) Error running binding compiler org.jibx.runtime.JiBXException: Binding binding.xml is unusable because of validation errors at org.jibx.binding.Utility.loadBinding(Utility.java:358)   at org.jibx.binding.Utility.loadFileBinding(Utility.java:420)
                    at org.jibx.binding.Compile.compile(Compile.java:217)
                    at org.jibx.binding.Compile.main(Compile.java:384)

Может кто-нибудь сказать, пожалуйста, что я делаю не так? Как я могу решить эту проблему? и почему мы должны связывать??

2 ответа

Раджеш,

Когда вы используете генератор кода JiBX, вам нужно сделать три шага:
1. Используйте генератор кода для генерации кода Java и файла привязки из схемы XML
2. Скомпилируйте ваш код Java
3. Используйте компилятор связывания для изменения ваших файлов классов Java, чтобы они могли генерировать XML-схему.
Я не вижу вашу схему, так почему бы вам не выполнить тест, чтобы увидеть, является ли проблема вашей схемой или вашими командными строками:
- Поместите вашу схему в пустой каталог и выполните эти команды.

java -cp ../lib/jibx-tools.jar org.jibx.schema.codegen.CodeGen starter.xsd
javac -cp ../lib/jibx-run.jar:. org/jibx/starter/Shipping.java
java -cp ../lib/jibx-bind.jar:. org.jibx.binding.Compile binding.xml

Конечно, вы замените путь к каталогу lib вашим путем (т.е. c:\Library).

Если это работает, теперь вы можете организовать свой проект в папки.

Вы можете найти полную документацию на нашем сайте по адресу http://www.jibx.org/.

Чтобы действительно упростить вашу жизнь, я бы порекомендовал использовать плагин maven. Конфигурация намного проще.

Надеюсь, это поможет.

дон

Возможно, у вас есть ошибка в build.xml. Вы правильно указали путь к классу? Откройте buid.xml, перейдите на поле, где находится первая строка. Посмотрите на под строкой.

если это "bin", вы должны иметь связывание.xml и пакет, содержащий файлы.class в "bin". Если он находится в bin/classes или другом пути, у вас будет эта ошибка, потому что он не найдет binding.xml, поэтому измените build.xml для записи bin/classes.

Если вы используете eclipse, вы должны сгенерировать классы, скомпилировать, обновить и затем выполнить опцию bind, иначе появится эта ошибка.

Другие вопросы по тегам