развертывание проекта OSGi в виде Webstart с использованием инструментов командной строки - PullRequest
2 голосов
/ 29 июня 2011

Как создать модульный проект OSGi, который можно распространять с помощью Java Webstart, используя инструменты командной строки?

Я нашел инструкции по экспорту набора плагинов OSGi из eclipse . Но инструкции для этого без помощи затмения найти сложно. Я хотел бы сделать это с помощью скриптов сборки Ant и / или других инструментов командной строки.

Вот что у меня так далеко. Используя ant, все пакеты подключаемых модулей копируются в каталог и подписываются. После этого я создал файл jnlp с именем wrapper.jnlp

<?xml version="1.0" encoding="UTF-8"?>
<jnlp codebase="http://localhost/webstart" href="wrapper.jnlp">
    <information>
        <title>My app</title>
        <vendor>Me</vendor>
        <offline-allowed/>
    </information>
    <resources>
        <j2se version="1.5+" java-vm-args="-Xmx512M"/>
        <jar href="org.eclipse.equinox.launcher.jar"/>
        <extension name="Wrapper feature" href="myprogram.jnlp"/>
    </resources>
    <application-desc main-class="org.eclipse.equinox.launcher.WebStartMain"/>
    <security>
         <all-permissions/>
    </security>
</jnlp>

Я создал второй файл jnlp с именем myprogram.jnlp.

<?xml version="1.0" encoding="UTF-8"?>
<jnlp codebase="http://localhost/webstart" href="myprogram.jnlp">
    <information>
        <title>My app</title>
        <offline-allowed/>
    </information>
    <resources>
         <j2se version="1.5+" java-vm-args="-Xmx512M"/>
         <jar href="myapp.jar"/>
         <jar href="derby.jar"/>
         <jar href="commons-math-2.0.jar"/>
             ...omitting a dozen more jar files...
    </resources>
    <application-desc main-class="myprogram.Main"/>
    <security>
         <all-permissions/>
    </security>
</jnlp>

Когда я развертываю и пытаюсь запустить его (из командной строки: javaws <a href="http://localhost/webstart/wrapper.jnlp" rel="nofollow">http://localhost/webstart/wrapper.jnlp</a>), файлы jar приложения появляются для загрузки. Тогда я получаю следующую ошибку в файле журнала:

!SESSION Wed Jun 29 13:43:52 CEST 2011 -----------------------------------------
!ENTRY org.eclipse.equinox.launcher 4 0 2011-06-29 13:43:52.448
!MESSAGE Exception launching the Eclipse Platform:
!STACK
java.lang.NullPointerException
    at java.util.Hashtable.put(Hashtable.java:411)
    at org.eclipse.equinox.launcher.WebStartMain.basicRun(WebStartMain.java:78)
    at org.eclipse.equinox.launcher.Main.run(Main.java:1408)
    at org.eclipse.equinox.launcher.WebStartMain.main(WebStartMain.java:57)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:616)
    at net.sourceforge.jnlp.Launcher.launchApplication(Launcher.java:590)
    at net.sourceforge.jnlp.Launcher$TgThread.run(Launcher.java:887)

Есть идеи, что я делаю не так? Где мне искать дальше?

Ответы [ 4 ]

1 голос
/ 05 октября 2011

У меня была такая же проблема.Я решил это, указав в моей оболочке jnlp следующее:

    <resources>
        <!-- Reference to the launcher jar. The version segment must be updated to the version being used-->
        <jar href="plugins/org.eclipse.equinox.launcher_1.2.0.v20110502.jar" />
        <!-- Reference to the osgi jar. The version segment must be updated to the version being used-->
        <jar href="plugins/org.eclipse.osgi_3.7.0.v20110613.jar" />

        ...

    </resources>
0 голосов
/ 01 августа 2011

Посмотрите на это http://www.jbundle.org/osgi-webstart/ "Используйте этот сервлет для развертывания приложений OSGi в веб-клиенте."

Хотя это плагин maven из документации, похоже, что вы можете запустить его без проекта maven.

0 голосов
/ 01 августа 2011

Согласно источникам, ваша проблема вызвана тем, что вам не удалось найти пакет org.eclipse.osgi на пути к классам.Убедитесь, что на пакет ссылаются правильно и что он имеет правильный манифест.

0 голосов
/ 28 июля 2011

Я полагаю, что вы, возможно, захотите переключиться и создать P2-репозиторий со своим кодом и всеми зависимостями, а затем иметь простой p2-установщик, извлекающий зависимости оттуда (в обход WebStart) и запускающий ваше приложение.

...