Изменение уже установленного приложения JNLP - PullRequest
0 голосов
/ 19 апреля 2019

Я пытаюсь изменить приложение, которое было развернуто с помощью JNLP на моем ПК. Однако, когда я пытаюсь заменить JAR существующего приложения на мой новый jar, он не может найти javax.jnlp.SingleInstanceService и javax.jnlp.BasicService.

Я уже подписал основной JAR-файл своей собственной парой ключей (не оригинальной), но она все равно не работает.

Следующие две строки выдают UnavailableServiceException (неинициализированный).

BasicService lookup = (BasicService)ServiceManager.lookup("javax.jnlp.BasicService");

SingleInstanceService singleInstanceService = (SingleInstanceService)ServiceManager.lookup("javax.jnlp.SingleInstanceService");

На немодифицированном JAR (который запускается с java.exe -cp SomeJar.jar) исключений не выдается. Я уверен, что это проблема подписи, так как даже у отказавшегося файла без других изменений все еще есть эта проблема.

Можно ли как-нибудь повторить это на моем модифицированном JAR (возможно, добавив сертификат хранилища ключей в какой-нибудь файл)?

1 Ответ

0 голосов
/ 19 апреля 2019

Проблема не в подписи фляги. Чтобы использовать JNLP API, вы должны запустить свой jar через файл jnlp.

Синтаксис для запуска файла jnlp: javaws your_jnlp_file

Ваш jar-файл должен быть зарегистрирован в контейнере ресурсов внутри вашего файла jnlp, а ваш jar-файл должен быть развернут как часть вашего веб-приложения. Вы начинаете свою банку как стандартную банку. Причина, по которой старый jar-файл не привел к ошибке, скорее всего потому, что он просто обработал UnavailableServiceException.

...