Вопрос

Как я ни стараюсь, я не могу запустить файл JNLP локально (с помощью двойного щелчка).Похоже, это проблема с поиском файла jar, даже когда я указываю его относительно файла jnlp.Я получаю следующую ошибку:

Поле <jar>href имеет недопустимое значение:helloworld.jar

Это происходит даже тогда, когда файл JNLP находится в той же папке, что и helloworld.jar.Я провел поиск, и это постоянная проблема, особенно для людей, которые хотят упаковать приложение на компакт-диск и использовать JNLP.Единственное "решение", предоставляемое Sun, - это возможность указывать кодовую базу через командную строку, но на самом деле это не очень помогает.Я не понимаю, почему они не предполагают или не допускают, чтобы кодовая база была "." или "file://." - я пробовал подобные вещи в параметре codebase тега jnlp (внутри файла), и ничего не сработало.


Для меня чрезвычайно удобно использовать файл JNLP, потому что мне не нужно беспокоиться об обнаружении платформы, собственных библиотеках или даже основных файлах JOGL jar;Я просто включаю эту строку, и все делается за меня:

<extension name="JOGL" href="http://download.java.net/media/jogl/builds/archive/jsr-231-2.0-beta10/webstart/jogl-all-awt.jnlp" />

Я надеюсь найти что-то, что может делать то же самое.Если нет, я могу вручную (или с помощью Ant) получить файлы jar JOGL, это не имеет большого значения;это всего лишь одна из тех вещей, которые JNLP делает для меня, и я действительно буду скучать по ним.


Какая лучшая альтернатива файлам JNLP для меня для локального использования (т. Е.дважды щелкните, чтобы запустить)?Есть ли что-нибудь настолько элегантное или мне просто нужно написать сценарий оболочки для Linux, пакетный файл для Windows и попросить Ant обнаружить и загрузить соответствующие JOGL jars?

Это было полезно?

Решение

Я использовал файл .jnlp, подобный этому, для локального запуска программного обеспечения Java Web Start

  1. укажите кодовую базу следующим образом:<jnlp spec="1.0+" codebase="file://localhost/X:/path/to/jnlp/" href="software.jnlp">

  2. перечислите ресурсы с относительными путями: <resources> <jar href="lib/software.jar" main="true" /> <jar href="lib/softwareLibrary.jar" main="true" /> ... </resources>

  3. и, наконец, сообщите Web Start, где он может найти точку входа в программное обеспечение внутри jar, помеченную main="true": <application-desc main-class="com.example.Main" />

Единственное, что вам нужно изменить при удаленном развертывании, - это параметр codebase.

Другие советы

Просто удалите атрибуты codebase и href От jnlp пометка.

<jnlp spec="1.0+">

Это поддерживается начиная с java 1.6u18.

Система JNLP была улучшена с обновлением Java 6 10 (некоторое время назад), но ее по-прежнему довольно сложно отлаживать (включение полной трассировки в консоли Java и пошаговое просмотр исходного кода javaws.

В вашей ситуации я бы сделал все возможное, чтобы это сработало.Возможно, вы бы предоставили полный JNLP-файл, показывающий проблему?

Используйте манифест для вашего jar.Там вы можете определить основной класс для запуска и необходимые библиотеки.Смотрите аргументы Main-class и Class-path в спецификации манифеста.

JNLP предназначен для запуска по сети (в частности, http (s)), и без сети реализация Java должна сильно запутаться.Даже зрелые проекты, такие как eclipse, придерживаются варианта .sh,.bat.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top