9

私はEclipse IDEで作業しているjavaFXプロジェクトを持っています。これは、Spring を使用した Maven プロジェクトです。私の目標は、このプロジェクトから実行可能な jar ファイル (dekstop アプリケーション) を作成することです。

他の Java プロジェクトと同様にアプリケーションを jar ファイルにエクスポートすると、エラーで次のように表示されます。

C:\eclipse\projjars>java -jar EqMan.jar
Exception in thread "main" java.lang.RuntimeException: java.lang.UnsatisfiedLinkError: Can't load library: C:\eclipse\bin\glass.dll
        at com.sun.javafx.tk.quantum.QuantumToolkit.startup(QuantumToolkit.java:276)
        at com.sun.javafx.application.PlatformImpl.startup(PlatformImpl.java:122)
        at com.sun.javafx.application.LauncherImpl.launchApplication1(LauncherImpl.java:163)
        at com.sun.javafx.application.LauncherImpl.access$000(LauncherImpl.java:47)
        at com.sun.javafx.application.LauncherImpl$1.run(LauncherImpl.java:115)
        at java.lang.Thread.run(Unknown Source)
Caused by: java.lang.UnsatisfiedLinkError: Can't load library: C:\eclipse\bin\glass.dll
        at java.lang.ClassLoader.loadLibrary(Unknown Source)
        at java.lang.Runtime.load0(Unknown Source)
        at java.lang.System.load(Unknown Source)
        at com.sun.glass.utils.NativeLibLoader.loadLibraryFullPath(NativeLibLoader.java:143)
        at com.sun.glass.utils.NativeLibLoader.loadLibraryInternal(NativeLibLoader.java:56)
        at com.sun.glass.utils.NativeLibLoader.loadLibrary(NativeLibLoader.java:31)
        at com.sun.glass.ui.Application$1.run(Application.java:75)
        at java.security.AccessController.doPrivileged(Native Method)
        at com.sun.glass.ui.Application.loadNativeLibrary(Application.java:73)
        at com.sun.glass.ui.Application.loadNativeLibrary(Application.java:85)
        at com.sun.glass.ui.win.WinApplication.<clinit>(WinApplication.java:33)
        at com.sun.glass.ui.win.WinPlatformFactory.createApplication(WinPlatformFactory.java:20)
        at com.sun.glass.ui.win.WinPlatformFactory.createApplication(WinPlatformFactory.java:17)
        at com.sun.glass.ui.Application.Run(Application.java:108)
        at com.sun.javafx.tk.quantum.QuantumToolkit.startup(QuantumToolkit.java:266)
        ... 5 more

javafxpackager で jar ファイルを作成しようとすると、次の 1 つのエラーが表示されます。

C:\eclipse\workspace\equification>javafxpackager -makeall -appclass ru.igs.ava.equification.EquificationFX -name "Equification" -width 800 -height 600
warning: [options] bootstrap class path not set in conjunction with -source 1.5
C:\eclipse\workspace\equification\src\main\java\ru\igs\ava\equification\EqConfigureRole.java:5: error: package org.springframework.context does not exist
import org.springframework.context.ApplicationContext;
C:\eclipse\workspace\equification\src\test\java\ru\igs\ava\equification\AppTest.java:11: error: cannot find symbol
    extends TestCase
            ^
//and the same error for every class, which is added to my project as maven dependency.

では、プロジェクトを NetBeans プロジェクトに変換せずに実行可能な jar ファイルを作成するにはどうすればよいですか?

4

2 に答える 2

5

ビルドに Maven を使用しているため、Maven を使用して JavaFX パッケージ化を開始することもできます。これを行うには、Maven antrunプラグインを使用してJavaFX ant タスクを呼び出し、 JavaFX ランチャーが埋め込まれたアプリケーション用の jar を生成します。これを行うサンプルの maven pomを次に示します。


javafx パッケージャーの実行時のエラーは、パッケージャーのクラスパスが適切に設定されていないことが原因です。依存ライブラリ jar に依存するアプリケーションをパッケージ化するために javafx パッケージャーのクラスパスを設定する方法の例は、このビルド スクリプトにあります。


unsatisfied link エラーは、アプリの実行時に jfxrt.jar の実行時の場所に関連する ../bin ディレクトリに必要な lib dll が含まれていないために発生します。また、JavaFX ランチャーを使用してアプリケーションを正しくパッケージ化していない可能性もあります (推奨される javafx ant タスクまたは javafxpackager コマンドを実行して JavaFX アプリケーション jar を生成します)。

アップデート

JavaFX アプリケーションの Maven ベースのビルドでは、 Maven JavaFX プラグインを使用できるようになりました。

于 2012-07-05T18:59:25.583 に答える
0

根本的な問題は、jfxrt.jar とインストールされている Java のバージョンとの非互換性によるものであるという疑いから出発しました。アプリケーションが使用していた jfxrt.jar は jdk-7u71 と互換性がありましたが、アプリケーションは JAVA_HOME が 7.0.05 に設定されたマシン上にありました。そこで、問題のマシンに jdk-7u71 をインストールし、JAVA_HOME を更新しました。

于 2014-12-04T02:24:45.903 に答える