Распространение/развертывание приложений JavaFX

Я просто заканчиваю небольшое приложение в JavaFX и начинаю думать о том, как его распространять. Я решил, что это будет простой вопрос о нажатии кнопки сборки и использовании одного из результирующих файлов.

По какой-то причине сборка создает:

  • Файл Jar, который жалуется, не может найти свой основной класс при двойном щелчке.
  • Файл jnlp, который не позволяет "не запускать приложение".
  • Файл html, который, когда он открывается в моем браузере, навсегда показывает логотип java.

Все это заставляет меня поверить, что что-то не так с моей настройкой Java. Как я могу получить этот проект, упакованный и выходящий из двери?

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

Важные детали: я am Ubuntu Karmic. Я переключился на Sun Java вместо OpenJDK (что, похоже, очень сильно связано с JavaFX), но я думаю, что firefox все еще использует OpenJDK.

Ответ 1

В прошлом при использовании Netbeans для создания JavaFX я использовал только созданные файлы jar, а не jnlp или html (если память правильно меняет, он указывает на localhost). С учетом сказанного я вручную создаю .jnlp для публикации на своем сервере. Ниже приведена копия .jnlp, которую я использую в www.ericonjava.com

 <?xml version="1.0" encoding="UTF-8"?>
<jnlp spec="1.0+" codebase="http://www.ericonjava.com/" href="bubblebreaker/bubblebreaker.jnlp">
<information>
    <title>Bubble Breaker</title>
    <vendor>www.ericonjava.com</vendor>
    <homepage href="#" onclick="location.href='http://www.ericonjava.com'; return false;"/>
    <description>Bubble Breaker</description>
    <offline-allowed/>
</information>
    <j2se href="#" onclick="location.href='http://java.sun.com/products/autodl/j2se'; return false;" version="1.6+"/>
<property name="jnlp.packEnabled" value="true"/>
    <extension name="JavaFX Runtime" href="#" onclick="location.href='http://dl.javafx.com/1.1/javafx-rt.jnlp'; return false;"/>
      <jar href="bubblebreaker/BubbleBreaker.jar" main="true"/>
</resources>
<application-desc main-class="bubblebreaker.Test"/>

Важными элементами тега являются:

  • codebase = "http://www.ericonjava.com"... Это должен быть ваш url
  • href="bubblebreaker/bubblebreaker.jnlp... относительный путь на вашем сервере к .jnlp
  • jar href= "bubblebreaker/BubbleBreaker.jar"... относительный путь на вашем сервере к .jar
  • application-desc main- class= "bubblebreaker.Test"... имя пакета и имя класса

Также при создании в netbeans... убедитесь, что вы щелкните правой кнопкой мыши вкладку проекта и перейдите в раздел свойств, чтобы установить такие свойства, как pack200 enabled/Draggable Applet.

Надеюсь, это поможет.