Я пишу базовую 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), который я также тестировал и получил ту же ошибку, т.е. работал в первый раз, а при втором запуске получил ошибку ...