Java Web Start не работает с JDK 1.7 - PullRequest
8 голосов
/ 08 марта 2012

ЗДЕСЬ ОТВЕТ: кажется (благодаря нашему тестированию), что Java 7 Web Start требует от вас размещения ресурсов на сервере с использованием сертификата SSL.Ваш сертификат НЕ должен быть подписан, но неподписанные сертификаты предложат клиенту сообщение о доверии, которое они могут проигнорировать.См. Ответ ниже для получения более подробной информации

У нас есть внутреннее приложение, которое мы используем уже много лет.Чтобы облегчить обслуживание этого приложения, мы не предоставили нашим сотрудникам устанавливаемую версию приложения, мы просто даем им ссылку на файл .jnlp и используем JWS для его запуска на своем компьютере.До сих пор это работало фантастически, но как только кто-то из наших сотрудников обновляет Java 7, система JWS перестает работать на их компьютере.Мы проверили, перепроверили и даже проверили нашу схему JNLP, и это нормально, что заставляет нас думать, что есть проблема с самим Web Start.

Когда пользователь щелкает файл jnlp, он запускает заставку Java 7, которая затем начинает загружать необходимые нам ресурсы.Оттуда он просто зависает, а индикатор выполнения приложения запуска JWS остается на нулевом проценте.

Есть идеи?Это во многом связано с тем, что они обновляются до Java 7. Тем временем мы советуем всем сотрудникам оставаться на Java 6 до дальнейшего уведомления.Весь наш код правильно подписан.

Вот копия нашего JNLP:

<?xml version="1.0" encoding="utf-8"?> 
<jnlp 
  spec="1.5+" 
  codebase="http://peiportal/updater">
  <information> 
    <title>PEI Portal Application</title>
    <vendor>Petz Enterprises, Inc.</vendor>
    <offline-allowed/>
  </information>
  <security>
      <all-permissions/>
  </security>
  <resources>
    <jar href="PEIPortalLauncher.jar"/>
  </resources>
  <application-desc/>
</jnlp>

Ответы [ 6 ]

12 голосов
/ 16 августа 2012

Мы недавно столкнулись с этой проблемой, когда люди начали устанавливать Java 7 на свои Windows-боксы. У нас есть экземпляры jar-файлов на трех разных серверах linux, и мы обнаружили, что мы можем загрузить приложение с двух из них, одного удаленного и одного локального, но не третьего, а также локального сервера.

Ключ был в спецификации кодовой базы в файле jnlp. Для того чтобы файл jar был успешно загружен в коробку Windows с Java 7, кодовая база должна была указывать «https: ...», а не «http: ...».

Вышеуказанный удаленный сервер настроен как безопасный и специально настроен для https. Ни один из локальных серверов не настроен надежно, но тот, который работал, только что использовал «https:» в спецификации кодовой базы. Изменение jnlp на другом сервере также помогло. (Наш jnlp является шаблоном и модифицируется для каждой установки вне системы контроля версий, поэтому существует вероятность различий.)

Вам может потребоваться удалить все нерабочие приложения, перечисленные в панели управления Java, для синхронизации с новым jnlp на вашем сервере: перейдите на вкладку «Общие» панели управления Java (доступна из панели управления Windows), нажмите Нажмите кнопку «Просмотр ...» в разделе «Временные файлы Интернета» и удалите все нерабочие приложения.

4 голосов
/ 15 октября 2012

Для тех, кто не имеет доступа к ссылке на kenai.com, предоставленной deepc: Упомянутая ошибка -

http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=7191454

Еще одна ошибка, обнаруженная в БД ошибок Java, которая может соответствовать описанию, может быть

http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=7177040

Надеюсь, Java Web Start снова будет работать через HTTP с u10 ...


Обновление: в нашем случае оказалось, что причиной была AVG антивирус . В настройках AVG отключите «Online Shield» и «Surf Shield», и комбинация Java 7, Windows 7 и простого HTTP сработала. Или обновите до последней версии AVG 2012. Ср http://forums.avg.com/in-en/avg-forums?sec=thread&act=show&id=216448.

2 голосов
/ 06 ноября 2012

Мы также столкнулись с этой проблемой, но исправили то, что ServerName и AliasName в нашем конфигурационном файле Apache содержали номер порта. т.е. domain.com: 443 . Когда Java 7 сравнивает имя_сервера, оно не совпадает, и возникает проблема. Удалив: 443 из названия все хорошо.

2 голосов
/ 06 сентября 2012

Хотя ответ grw определенно правильный, я обошел эту проблему, заставив 1.6 в своем файле JNLP:

  <resources>
-    <j2se version="1.6+" java-vm-args="-Xmx256M"/>
+    <j2se version="1.6" java-vm-args="-Xmx256M"/>

Используйте вторую строку в патче выше, без плюса. Это должно заставить Java 7 загружать файлы, используя Java 6 JRE, который затем будет работать.

1 голос
/ 05 октября 2012

Когда пользователь щелкает файл jnlp, он запускает заставку Java 7, которая затем начинает загружать необходимые нам ресурсы.Оттуда он просто зависает, и индикатор выполнения в приложении запуска JWS остается на нулевом проценте.

FWIW, это также может быть вызвано тупиком в Webstart, который разрешен только в 7u10 (на данный моментеще в бете).См. http://javafx -jira.kenai.com / browse / RT-25023 .Кажется, что тупик находится между потоком GUI (например, для консоли Java) и потоком загрузки jar.

0 голосов
/ 19 октября 2012

У нас была похожая проблема после обновления 1.7, но мы смогли решить ее путем экранирования символов в файле .jnlp для href, т. Е. Путем изменения знака вопроса и амперсанда в значении href с помощью?и & соответственно.

href = "appname.jnlp? protocol = http & host = xx.xx.xx.xx & port = xx"

Этот подход будет немного безопаснее, если 1.6 будет удален после1.7 обновить и сохранить значение спецификации до «1.6 +».

...