У меня есть Java-приложение для настольного компьютера с JavaFX 2, которое я создал, а затем попытался запустить 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.
Редактировать: строка 150 в Main.java - 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
После дальнейших исследований:
После некоторых интернет-исследований я обнаружил следующие похожие обсуждения, которые я все еще изучаю:
Похоже, 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? Как заставить мою программу выглядеть в правильном месте и почему это не так?