1

JavaFX デプロイメント ガイドを正しく読めば、「アプリケーションが昇格された特権を必要としない...」限り、署名されていないアプリケーションをデプロイできるはずです。アプリケーションを次のコードに減らしました。

package fxadhoc;

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Label;
import javafx.scene.layout.Pane;
import javafx.stage.Stage;

public class FXAdHoc
    extends Application
{

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args)
    {
        System.out.println( "launch" );
        launch( args );
    }

    @Override
    public void start(Stage stage) throws Exception
    {
        Pane    root    = new Pane();
        root.getChildren().add( new Label( "Testing" ) );
        Scene   scene  = new Scene( root );
        stage.setScene( scene );
        stage.show();
    }
}

(NetBeans によって作成された) jar ファイルをダブルクリックしても、何も起こりません。html または jnlp ファイル (これも NetBeans によって作成されます) を介して起動しようとすると、セキュリティ例外が発生します。

Caused by: java.security.AccessControlException: access denied ("java.util.PropertyPermission" "javafx.debug" "read")

完全なスタック トレースを以下に示します。

最新の更新プログラムをすべて適用して Windows 7 を実行しています。最新バージョンの JavaFX を搭載した最新バージョンの NetBeans (7.1.1) をダウンロードしました。JavaFX サンプルをダウンロードしましたが、問題なく動作します。(ご参考までに、アプリケーションの自己署名を試みたところ、「ava.lang.RuntimeException: java.lang.UnsatisfiedLinkError: Can't load library: C:\Users\jack\Documents\NetBeansProjects\FXAdHoc」という例外が発生しました。 \dist\bin\mat.dll")。Linux でビルドすると同じ例外が発生します (ここでも NetBeans 7.1.1 を使用します)。

何が欠けているのか誰か教えてもらえますか? ありがとう...

例外の完全なスタック トレース:

java.lang.RuntimeException: Application launch error
    at com.sun.javafx.application.LauncherImpl$1.run(LauncherImpl.java:104)
    at java.lang.Thread.run(Unknown Source)
Caused by: java.lang.ExceptionInInitializerError
    at com.sun.javafx.application.LauncherImpl.launchApplication1(LauncherImpl.java:140)
    at com.sun.javafx.application.LauncherImpl.access$000(LauncherImpl.java:27)
    at com.sun.javafx.application.LauncherImpl$1.run(LauncherImpl.java:97)
    ... 1 more
Caused by: java.security.AccessControlException: access denied ("java.util.PropertyPermission" "javafx.debug" "read")
    at java.security.AccessControlContext.checkPermission(Unknown Source)
    at java.security.AccessController.checkPermission(Unknown Source)
    at java.lang.SecurityManager.checkPermission(Unknown Source)
    at java.lang.SecurityManager.checkPropertyAccess(Unknown Source)
    at java.lang.System.getProperty(Unknown Source)
    at com.sun.javafx.runtime.SystemProperties.getProperty(SystemProperties.java:178)
    at com.sun.javafx.runtime.SystemProperties$1.run(SystemProperties.java:67)
    at java.security.AccessController.doPrivileged(Native Method)
    at com.sun.javafx.runtime.SystemProperties.<clinit>(SystemProperties.java:62)
    ... 4 more
4

1 に答える 1

1

どうやら、私には 3 つの異なる問題がありました。これが間違っている場合は修正してください。

  1. 署名されていない jar ファイルをデプロイできるはずですが、できません。これは既知の問題だと思います。
  2. JavaFX ランタイムをダウンロードしてインストールしても、パスから自動的に使用可能になるわけではありません。(自分のコードを実行できないのにサンプルを実行できる理由はわかりませんが、それを理解する必要があります。)"...\JavaFX 2.o runtime\bin"パスを挿入すると、「mat.dll が見つかりません」という問題が解決しました。おそらく、libmat.so を含むディレクトリを Linux システムのパスに入れると、そこでも問題が解決します。
  3. 問題を修正するためにさまざまなアプローチを試みたところ、jar ファイルが署名されていても、「署名されていないリソース」例外が発生することがありました。これは、少なくとも 1.4 までさかのぼる既知の Java の問題だと思います。解決策は、一時ファイルのキャッシュを無効Windows control panel/java/general/settingsにすることでした ( )。私が読んだいくつかの発言は、キャッシングを有効にすることが問題を解決するものであると述べたことに注意してください。
于 2012-04-24T04:24:43.207 に答える