Каков точный способ использовать одобренный каталог в jdk1.6? - PullRequest
8 голосов
/ 18 мая 2010

Я хочу обновить мои jaxws до 2.2 (jdk1.6 поставляется в комплекте с jaxws 2.1). Мой JDK (я не установил публичный JRE):

java version "1.6.0_20"
Java(TM) SE Runtime Environment (build 1.6.0_20-b02)
Java HotSpot(TM) Client VM (build 16.3-b01, mixed mode)

В собственном документе jaxws они объясняют, как это сделать:

Один из способов исправить это - скопировать jaxws-api.jar и jaxb-api.jar в одобренный каталог JRE, который является $JAVA_HOME/lib/endorsed (or $JDK_HOME/jre/lib/endorsed)

Но я не уверен, что это влияет на мою установку. Для начала я определил только %JAVA_HOME%. И папка $JAVA_HOME/lib/endorsed не существует, поэтому я создал и скопировал две банки. Но если я это сделаю (wsgen - это инструмент от jaxws)

wsgen -version

Я все еще получаю:

JAX-WS RI 2.1.6 in JDK 6

Я также попытался создать папку JAVA_HOME\jre\lib\endorsed (обратите внимание, что в документе написано JDK_HOME, но, поскольку у меня есть только JAVA_HOME, я использовал этот путь). Все тот же вывод wsgen.

Мои вопросы:

  1. В чем разница между JAVA_HOME и JDK_HOME на странице документа? что-нибудь существенное или просто два способа обратиться к JAVA_HOME?
  2. Является ли 'wsgen -version' допустимым способом проверки используемой версии jaxws, или это всегда вызывает exe в исходном jdk, но это не означает, что будут использоваться одобренные jar-файлы?
  3. Кто-нибудь знает очень подробные шаги , чтобы установить jaxws2.2 в jdk.16?

Я нашел это сообщение , в котором есть некоторые подсказки о том, что я вижу, я думаю

Ответы [ 3 ]

11 голосов
/ 14 июля 2012

Вам следует проверить системное свойство java.endorsed.dirs, например, позвонив System.getProperty("java.endorsed.dirs"). На Windows-машине это обычно что-то вроде C:\Program Files\Java\jdk1.6.0_16\jre\lib\endorsed. Поместите фляги, которые Вы хотите поддержать здесь. Если этот каталог не существует, просто создайте его.

Другой вариант - поместить файлы jar в каталог по своему вкусу, но переопределить системное свойство, добавив параметр командной строки -Djava.endorsed.dirs=<Your endorsed jars directory>.

1 голос
/ 18 мая 2010

Он не привязан к переменным вашей среды. % JAVA_HOME% - это просто сокращение в документации, которое не знает, где вы установили Java или какую версию Java вы установили.

% JAVA_HOME% ссылается на JRE (обычная среда выполнения, которую должен иметь не разработчик). % JDK_HOME% относится к корневому каталогу JDK, Java Development Kit, то, что разработчик будет использовать.

Более того, вы должны знать, когда вы запускаете wsgen, откуда он запускается, и что соответствующая JVM сконфигурирована с одобренным каталогом, содержащим jar.

0 голосов
/ 01 декабря 2016

wsimport и wsgen, включенные в jre, находятся в каталоге jre / bin как exe, и если вы все равно вызываете его из командной строки, он все равно будет запускать реализацию Jax-WS 2.1.

Для обновления до Jax-WS 2.2 вам необходимо загрузить соответствующий RI JAX-WS 2.2.X с веб-сайта jaxws.

Вам необходимо извлечь содержимое на ваш компьютер.

Вам также необходимо скопировать jaxws-api.jar и jaxb-api.jar в одобренный каталог (согласно вашему первоначальному описанию)

ОДНАКО вместо того, чтобы использовать wsgen.exe или wsimport.exe (в зависимости от вашего проекта), вам теперь нужно использовать тот, который представлен в обновлении / загрузке jax-ws 2.2.

В каталоге jaxws-ri, который вы извлекли из загрузки JAX-WS 2.2, вы увидите каталог bin и 4 файла (wsgen.bat, wsgen.sh, wsimport.bat, wsimport.sh) и эти это те, которые вам нужно запустить вместо.

Для их запуска необходимо настроить переменную среды JAXWS_HOME (подробности см. В файлах wsgen / wsimport.bat / sh).

Теперь это должно позволить вам запустить JAX-WS 2.2 с JDK 1.6

...