Как создать модульный проект 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)
Есть идеи, что я делаю не так? Где мне искать дальше?