Связывание в 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, иначе появится эта ошибка.