私が構築したJavaFX 2を使用したJavaデスクトップアプリケーションがあり、JARを実行しようとしました。実行に失敗したため、コマンド ラインから実行してエラーを取得しました。これが私が得たものです:
編集:いくつかのコード行が追加/削除されたため、スタックトレースを更新しました(エラーは同じです)
C:\Users\user\Desktop>java -jar DesktopApp.jar
Error: failed to msvcr100.dll java.lang.UnsatisfiedLinkError: Can't load library: C:\Users\user\Desktop\bin\msvcr100.dll
*** Fallback to Prism SW pipeline
Exception in thread "main" java.lang.ExceptionInInitializerError
Caused by: java.lang.RuntimeException: java.lang.UnsatisfiedLinkError: Can't load library: C:\Users\user\Desktop\bin\mat.dll
at com.sun.javafx.tk.quantum.QuantumToolkit.startup(QuantumToolkit.java:252)
at com.sun.javafx.application.PlatformImpl.startup(PlatformImpl.java:30)
at javafx.embed.swing.JFXPanel.initFx(JFXPanel.java:128)
at javafx.embed.swing.JFXPanel.<init>(JFXPanel.java:138)
at app.Main.<clinit>(Main.java:150)
Caused by: java.lang.UnsatisfiedLinkError: Can't load library: C:\Users\user\Desktop\bin\mat.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:155)
at com.sun.glass.utils.NativeLibLoader.loadLibraryInternal(NativeLibLoader.java:85)
at com.sun.glass.utils.NativeLibLoader.loadLibrary(NativeLibLoader.java:30)
at com.sun.glass.ui.Application$1.run(Application.java:27)
at java.security.AccessController.doPrivileged(Native Method)
at com.sun.glass.ui.Application.loadNativeLibrary(Application.java:25)
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:49)
at com.sun.javafx.tk.quantum.QuantumToolkit.startup(QuantumToolkit.java:242)
... 4 more
Could not find the main class: app.Main. Program will exit.
編集: Main.java の 150 行目はpublic static JFXPanel javafxPanel = new JFXPanel
. FX がmat.dllを必要としているように見えますが、間違った場所を探しているため、見つけることができません。Vista (32 ビット) でプログラムを実行していますが、Windows 7 (64 ビット) で実行すると、最初の行 (以下) が表示されません。
Error: failed to msvcr100.dll java.lang.UnsatisfiedLinkError: Can't load library: C:\Users\user\Desktop\bin\msvcr100.dll
さらに調査した後:
いくつかのインターネット調査の後、私はまだ研究している以下の同様の議論を見つけました:
- http://forums.oracle.com/forums/thread.jspa?threadID=2230876&tstart=31
- http://forums.oracle.com/forums/thread.jspa?threadID=2250369
- http://netbeans.org/bugzilla/show_bug.cgi?id=198599
msvcr100.dllとmat.dllが JavaFX ランタイムに関連しているようです。JavaFX Netbeans プラグインはありますが、ランタイムがありません。私は今それを持っていますが、それは問題を修正または変更しませんでした. msvcr100.dll と mat.dll は ....netbeans\7.0\lib\javafx2-win\bin\ にあり、(ランタイムをインストールした後) C:\Program Files\Oracle\JavaFX Runtime 2.0\bin にもありました。Netbeans で実行すると、私のプログラムは適切な場所を探しているようです。
このプログラムを実行したのはこれが初めてではありません。過去の試行では成功しました。Netbeans を実行してもエラーは発生せず、プログラムは適切に実行されます。
これはFXのバグでしょうか?プログラムが正しい場所に表示されるようにするにはどうすればよいですか? また、そうでないのはなぜですか?