java web start не может запуститься при втором запуске

Я пишу базовую java-программу для тестирования jnlp и экспорта в виде исполняемого jar-файла из eclipse и подписываю jarsigner.

Файл jnlp выглядит следующим образом

<?xml version="1.0" encoding="utf-8"?>
    <jnlp spec="1.0+" codebase="http://192.168.2.15/test" href="test.jnlp">
        <information>
            <title>test</title>
            <vendor>test</vendor>
            <homepage href="http://192.168.2.15/test" />
            <description>test</description>
        </information>
        <security>
            <all-permissions/>
        </security>
        <resources>
            <j2se version="1.6+" />
            <jar href="test.jar" />
        </resources>
        <application-desc main-class="Test.main">
        </application-desc>
    </jnlp>

когда я делаю тест с [javaws http://192.168.2.15/test/test.jnlp], он работает, как и ожидалось, для первого запуска.

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

java.io.IOException: Server returned HTTP response code: 500 for URL: [http://192.168.2.15/test/test.jar]
    at sun.reflect.GeneratedConstructorAccessor2.newInstance(Unknown Source)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
    at java.lang.reflect.Constructor.newInstance(Unknown Source)
    at sun.net.www.protocol.http.HttpURLConnection$6.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at sun.net.www.protocol.http.HttpURLConnection.getChainedException(Unknown Source)
    at sun.net.www.protocol.http.HttpURLConnection.getInputStream(Unknown Source)
    at com.sun.deploy.net.BasicHttpRequest.doRequest(Unknown Source)
    at com.sun.deploy.net.BasicHttpRequest.doGetRequestEX(Unknown Source)
    at com.sun.deploy.net.DownloadEngine.isUpdateAvailable(Unknown Source)
    at com.sun.deploy.net.DownloadEngine.isUpdateAvailable(Unknown Source)
    at com.sun.deploy.net.DownloadEngine.getResourceCacheEntry(Unknown Source)
    at com.sun.deploy.net.DownloadEngine.getResourceCacheEntry(Unknown Source)
    at com.sun.deploy.net.DownloadEngine.getResource(Unknown Source)
    at com.sun.javaws.LaunchDownload$DownloadTask.call(Unknown Source)
    at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source)
    at java.util.concurrent.FutureTask.run(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)
Caused by: java.io.IOException: Server returned HTTP response code: 500 for URL: [http://192.168.2.15/test/test.jar]
    at sun.net.www.protocol.http.HttpURLConnection.getInputStream(Unknown Source)
    at java.net.HttpURLConnection.getResponseCode(Unknown Source)
    ... 13 more

Когда я удаляю программу из кеша с помощью javaws -uninstall и пытаюсь запустить с помощью javaws [http://192.168.2.15/test/test.jnlp], она обычно снова работает для первого запуска, но когда я пытаюсь второй раз, я получаю такая же ошибка выше.

Моя тестовая платформа - Windows 7 Ultimate, и установлена ​​​​последняя версия Java.

Я новичок в Java, и я не мог найти проблему. Не могли бы вы помочь мне?

Результат проверки моего файла JNLP с помощью JaNeLA:

Отчет JaNeLA - версия 11.05.17

Отчет для http://192.168.2.15/sistem/toplanti/test.jnlp

  • Кодировка XML неизвестна, но объявлена ​​как utf-8
  • Codebase + href 'http://192.168.2.15/Sistem/Toplanti/test.jnlp' не совпадает с фактическим местоположением 'http://192.168.2.15/sistem/toplanti/test.jnlp'.
  • Оптимизируйте это приложение для автономного использования, добавив флаг.
  • Загрузки можно оптимизировать, указав размер ресурса для «test.jar».
  • Загрузка ресурсов в test.jar может быть оптимизирована путем удаления (по умолчанию) значения download='eager'.
  • Загрузка ресурсов в test.jar может быть оптимизирована путем удаления (по умолчанию) значения main='false'.
  • Возможно, можно оптимизировать запуск приложения. указав download='lazy' для ресурса test.jar.
  • Отложенная загрузка может не работать должным образом для test.jar, если не указана «часть» загрузки.

Я все еще пытаюсь решить проблему, и когда я тестировал jnlp на ПК с ОС как Windows XP, я не получил никакой ошибки, один и тот же jnlp работает всегда (для первого запуска, второго запуска,...) Там это также еще один компьютер (Windows 7 Professional), который я также тестировал и получил ту же ошибку, т.е. работал в первый раз, а при втором запуске получил ошибку ...


person Köksal USLUBAŞ    schedule 24.06.2011    source источник


Ответы (3)


Я, наконец, решил свою проблему, проведя некоторое количество тестов. Я обнаружил, что это связано с web.config, и для своего приложения я использую инструменты телерика, и в web.config есть строка для сжатия, такая что [add name="RadCompression" type="Telerik.Web.UI.RadCompression" preCondition="integratedMode" ]. Я решил свою проблему, закомментировав (удалив) эту строку.

:)

person Köksal USLUBAŞ    schedule 30.06.2011

Похоже, что используемый вами веб-сервер возвращает ошибку 500 при попытке доступа к URL-адресу.

Если да, то проблема не в Java WebStart, а в вашем веб-сервере. Как вы это настроили?

person Thorbjørn Ravn Andersen    schedule 24.06.2011
comment
Извините, я плохо понял, я настроил свой веб-сервер с настройками по умолчанию и не знаю, что я должен контролировать. С другой стороны, как я сказал в своем посте, он работает для первого запуска, я имею в виду, что он успешно загружает программу и работает, я получаю сообщение об ошибке для второго и другого запуска. - person Köksal USLUBAŞ; 24.06.2011

Проверьте JNLP, используя JaNeLA.

person Andrew Thompson    schedule 26.06.2011
comment
Привет, Эндрю. Да, как ты сказал, я проверил свой test.jnlp с помощью Janela и получил следующий результат. - person Köksal USLUBAŞ; 27.06.2011
comment
В ПОРЯДКЕ. Что вы ожидали от меня, предложения кормить вас ложкой на основе результатов? Один совет, который я вам дам, игнорируйте предупреждения и оптимизации (на данный момент) и сосредоточьтесь на ошибках. О, и это пишется как «система» с буквой «у», а не «система» с буквой «и». - person Andrew Thompson; 27.06.2011