3

JavaFX 2.2 アプリケーションを開発しました。JAR をパッケージ化して署名し、JNLP を手書きで作成しました (以下を参照)。

問題は、Java Web Start でアプリケーションを起動できないことです。たとえば、.jnlp ファイルをダブルクリックします。

次のエラー メッセージが表示されます:クラスが見つかりません: xxxx.pamoja.client.RichClientApplication

アプリケーションを次のように起動しても問題ありません。

java -jar pamoja-rich-client.jar

または、JAR ファイルをダブルクリックします。

したがって、アプリケーションが一般的に機能することはわかっています。したがって、問題はJava Web Startに関連していると思います。

「グーグル検索」に多くの時間を費やしましたが、私の問題に当てはまる情報は見つかりませんでした。

誰かがアイデアを持っていますか?ヒントに感謝します!

JAR は次のようになります。

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 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)

アップデート

次のように codebase 属性を追加しました。

<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>

Unable to find class: 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)
4

4 に答える 4

4

jnlp が正しくないようです。そして、JavaFX への参照を追加する必要があります - たとえば Windows の場合:

<resources os="Windows">
    <jfx:javafx-runtime version="2.2+" href="http://javadl.sun.com/webapps/download/GetFile/javafx-latest/windows-i586/javafx2.jnlp"/>
</resources>
于 2013-09-25T11:33:46.700 に答える
2

jnlp を手動で生成しないでください。代わりに、JavaFX パッケージ ツールを使用して jnlp を自動的に生成します。それが機能したら、必要に応じて jnlp を手動で微調整できます。

于 2013-09-25T16:00:11.837 に答える