ошибка с jaxb - PullRequest
       27

ошибка с jaxb

0 голосов
/ 25 февраля 2011

Я использую jaxb (версия xjc "2.0-b26-ea3")

Я смог сгенерировать классы для схемы (.xsd), используя xjc, но, тем не менее, когда я пытаюсь скомпилировать сгенерированныйклассы, которые я получаю сообщения об ошибках ... "Пакет javax.xml.bind.annotation" не существует. "

Я использую jdk1.5.0_14. Я пытаюсь запустить через командную строку.

Любая помощь будет оценена.

Спасибо заранее !!

Ответы [ 2 ]

4 голосов
/ 25 февраля 2011

Сгенерированные XJC исходные файлы Java используют аннотации из API JAXB. Чтобы их скомпилировать, эти типы аннотаций должны быть в пути к классам.

Чтобы использовать JAXB (для маршалинга и демаршаллинга в / из документов XML), вам понадобятся следующие вещи:

  • Определения JAXB API.
  • Реализация JAXB.
  • Любые библиотеки, от которых зависит реализация.

Реализация отделена от API и взаимозаменяема. Он будет расположен через механизм поставщика услуг Java. Я не буду вдаваться в подробности этого здесь, но допустим, что достаточно иметь jar с реализацией на вашем classpath. Обычно вы будете делать вызовы только для классов JAXB API. Например, JAXBContext.newInstance("my.sample.pack");.

Фактическая реализация находится во время выполнения и загружается через ваши вызовы API. Это означает, что для компиляции кода JAXB достаточно jar с API. Реализация и ее зависимости требуются только во время выполнения.

Теперь для JDK 1.6.x вам не нужно будет добавлять что-либо дополнительное в ваш путь к классам. Начиная с Java SE 6, JAXB API был включен в стандартный Java SE API. Java Runtime Environment также включает в себя реализацию этого API. Это эталонная реализация, доступная на сайте java.net jAXB.

Для JDK 1.5.x все немного по-другому. JAXB API еще не был включен в качестве стандартного Java API. Так что вам нужно сделать его доступным вручную. По крайней мере, вам понадобится API; Реализация, которую вы собираетесь использовать, свободна в выборе, хотя я не знаю ничего, кроме эталонной реализации, в верхней части моей головы. Это, пожалуй, лучший для начала. Нажмите кнопку «Загрузить сейчас» на сайте JAXB, указанном выше. Вы увидите ссылку для скачивания файла JAR. Получите это и откройте его, дважды щелкнув по нему в вашей файловой системе или запустив через командную строку. Это позволит извлечь некоторый контент в папку в том же месте, где находится банка. Вы увидите несколько папок. Папка bin содержит исполняемые файлы для xjc и schemagen. Там также документация и примеры папок. Папка lib нам интересна. Вот краткое изложение:

  • jaxb-api.jar: это JAXB API; это понадобится вам для компиляции вашего сгенерированного кода
  • jaxb-impl.jar: эталонная реализация; не требуется для компиляции, но вы захотите это во время выполнения
  • jaxb-xjc.jar: полезно для программного вызова xjc или в Ant
  • jaxb1-impl.jar: эталонная реализация API JAXB 1; Я предполагаю, что вы будете придерживаться JAXB 2, так что игнорируйте его
  • активации.jar: зависимость, не требуется для компиляции, но может потребоваться во время выполнения
  • jsr173_1.0_api.jar: на самом деле это Java Streaming API для XML (StAX); используется эталонной реализацией JAXB

Последний работает как JAXB с точки зрения реализации. Это API со взаимозаменяемыми реализациями. И так же, как JAXB, он не доступен по умолчанию в Java 5, но был включен в Java 6 API. Возможно, вам потребуется реализация этого также и в Java 5. Я оставляю вас, чтобы найти и использовать ее; Выполненные шаги будут очень похожи на то, что я описал для JAXB.

Итак, чтобы обернуть все это в краткий обзор ... Если вы можете использовать Java 6, почти все зависимости доступны из коробки, и вам не понадобятся какие-либо дополнительные вещи в вашем classpath для компиляции JAXB связанный код и запустить его. Для Java 5 вам как минимум понадобится JAXB API для компиляции и API плюс реализация во время выполнения. Реализация может иметь некоторые собственные зависимости, поэтому, если вы все еще получаете ошибки ClassNotFound, попробуйте выяснить, из какого проекта является отсутствующий класс.

Сайт jarfinder, предложенный Pangea, может быть очень полезен для этого.Но не пропустите шаг проверки сайта проекта, чтобы убедиться, что вы получили все зависимости, последнюю версию и посмотрите, каковы условия лицензирования.

Удачи!

2 голосов
/ 25 февраля 2011

Этот пакет является частью jaxb 2.0 api.Вы можете скачать его здесь .На такие вопросы легко ответить с помощью http://www.jarfinder.com

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...