Я разработал приложение JavaFX 2.2. Я упаковал и подписал JAR и написал JNLP вручную (см. Ниже).Ошибка при запуске приложения JavaFX 2.2 с Java Web Start
Проблема в том, что я не могу запустить приложение с Java Web Start; например, дважды щелкнув файл .jnlp.
я столкнулся следующее сообщение об ошибке: Не удалось найти класс: xxxx.pamoja.client.RichClientApplication
Это не проблема для запуска приложения с:
java -jar pamoja-rich-client.jar
или по дважды щелкните файл JAR.
Поэтому я знаю, что приложение работает в целом. Поэтому я думаю, что проблема связана с Java Web Start.
Я потратил много времени на поиски «googling around», но не нашел никакой информации, применимой к моей проблеме.
Есть ли у кого-то идеи? Я благодарен за любые намеки!
Архиватору выглядит следующим образом:
jar
|- META-INF
| |- MANIFEST.MF
| |- PAMOJA.RSA
| |- PAMOJA.SF
|
|- com
|- javafx
| |- main
| |- Main.class
| |- NoJavaFXFallback.class
|
|- xxxxx
|- pamoja
|- client
|- RichClientApplication.class
|- main.css
|- main.fxml
|- ...
Манифест (до подписания):
Manifest-Version: 1.0
JavaFX-Version: 2.2
JavaFX-Application-Class: xxxx.pamoja.client.RichClientApplication
JavaFX-Fallback-Class: com.javafx.main.NoJavaFXFallback
Main-Class: com.javafx.main.Main
JNLP:
<?xml version="1.0" encoding="UTF-8"?>
<jnlp spec="1.0+" href="pamoja-rich-client.jnlp">
<information>
<title>Pamoja Rich Client</title>
<vendor>kKdH</vendor>
<description></description>
<icon href="icon.png"/>
</information>
<resources>
<j2se version="1.7+" href="http://java.sun.com/products/autodl/j2se"/>
<jar href="pamoja-rich-client.jar" download="eager" main="true"/>
</resources>
<security>
<all-permissions/>
</security>
<application-desc name="Pamoja Rich Client"/>
<update check="always" policy="prompt-run"/>
</jnlp>
Java:
java version "1.7.0_40"
Java(TM) SE Runtime Environment (build 1.7.0_40-b43)
Java HotSpot(TM) Client VM (build 24.0-b56, mixed mode, sharing)
UPDATE
я добавил атрибут кодовой базы следующим образом:
<jnlp spec="1.0+" href="pamoja-rich-client.jnlp" codebase="http://localhost:8080/">
И JavaFX в качестве ресурса:
<resources os="Windows">
<jfx:javafx-runtime version="2.2+" href="http://javadl.sun.com/webapps/download/GetFile/javafx-latest/windows-i586/javafx2.jnlp"/>
</resources>
Сообщение об ошибке Невозможно найти класс: xxxx.pamoja.client.RichClientApplication отсутствует. Но теперь он выбрасывает следующее NullPointerException:
java.lang.NullPointerException
at com.javafx.main.Main.getAppArguments(Main.java:506)
at com.javafx.main.Main.main(Main.java:860)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at com.sun.javaws.Launcher.executeApplication(Unknown Source)
at com.sun.javaws.Launcher.executeMainClass(Unknown Source)
at com.sun.javaws.Launcher.doLaunchApp(Unknown Source)
at com.sun.javaws.Launcher.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Вам нужно указать атрибут codebase в тэге jnlp и указать его по URL-адресу, с которого вы загружаете файл jnlp. Затем он используется для всех относительных атрибутов href в вашем файле jnlp. – Matthias
Обязательно проверьте JNLP с помощью [JaNeLA] (http://pscode.org/janela/). –