2016-09-07 3 views
1

У нас есть приложение, которое мы недавно добавили JavaFX и обновили до последней JRE, и теперь Jwrapper не запустит приложение в Windows (MacOS и Linux в порядке).JWrapper с JavaFX не запускается на окнах

Мы выполнили инструкции на этом посту http://www.jwrapper.com/blog/bundling-javafx-into-a-native-exe и соответствующим образом изменили конфигурацию JWrapper.

Мы используем JDK1.80_102 и версию JWrapper: jwrapper-00044250826.jar. Мы строим через maven (у нас есть плагин, который делает это).

Приложение загружается, но не запускается. Смотрите журналы ниже:

+0  ----- Starting Launcher ----- 
+0  [Launcher]  Arg[0]=C:\Users\username\AppData\Roaming\JWrapper-APPNAME (UAT)\JWrapper-Windows64JRE-00046316492-complete\bin\APPNAME (UAT).exe 
+0  [Launcher]  Arg[1]=-cp 
+0  [Launcher]  Arg[2]=C:\Users\username\AppData\Roaming\JWrapper-APPNAME (UAT)\JWrapper-APPNAME (UAT)-00046316696-complete\jarname-all-3012-SNAPSHOT.jar;C:\Users\username\AppData\Roaming\JWrapper-APPNAME (UAT)\JWrapper-APPNAME (UAT)-00046316696-complete\jwrapper_utils.jar 
+0  [Launcher]  Arg[3]=-Xms256m 
+0  [Launcher]  Arg[4]=-Xmx1024m 
+0  [Launcher]  Arg[5]=-Duser.groovyServer=groovy.server.url.com 
+0  [Launcher]  Arg[6]=-DcurrentEnvironment=UAT 
+0  [Launcher]  Arg[7]=-DreqServerVersion=2016-09-08:1.0-0 
+0  [Launcher]  Arg[8]=-DprojectVersion=3012-SNAPSHOT 
+0  [Launcher]  Arg[9]=-DstartBanner=o3gui/images/app_banner.gif 
+0  [Launcher]  Arg[10]=-Dswing.aatext=true 
+0  [Launcher]  Arg[11]=-Dapple.laf.useScreenMenuBar=true 
+0  [Launcher]  Arg[12]=-Dcom.apple.mrj.application.apple.menu.about.name=APPNAME 
+0  [Launcher]  Arg[13]=3 
+0  [Launcher]  Arg[14]=-Djavafx.macosx.embedded=true 
+0  [Launcher]  Arg[15]=jwrapper.JWrapper 
+0  [Launcher]  Arg[16]=C:\Users\username\AppData\Roaming\JWrapper-APPNAME (UAT)\JWrapper-APPNAME (UAT)-00046316696-complete\JWLaunchProperties-1473288163056-24 
+15  [Launcher] Found tail marker 
+0  [Launcher] App Name = APPNAME (UAT) 
+0  [Launcher] App Version = 
+0  [Launcher] JRE Version = 
+0  [Launcher] GU Version = 
+0  [Launcher] Min Splash MS = 850 
+0  [Launcher] Signature Public Key = 
+0  [Launcher] Can Override Splash = 0 
+0  [Launcher] Install Type = perm_user 
+0  [Launcher] Silent Parameter = 
+0  [Launcher] Update URL = 8 
+0  [Launcher] ExePath is C:\Users\username\AppData\Roaming\JWrapper-APPNAME (UAT)\JWrapper-Windows64JRE-00046316492-complete\bin\APPNAME (UAT).exe 
+0  [Launcher] Master dir from exe path is C:\Users\username\AppData\Roaming\JWrapper-APPNAME (UAT) 
+0  [Launcher] Master folder is C:\Users\username\AppData\Roaming\JWrapper-APPNAME (UAT) 
+0  [Launcher] Located existing bin JRE runtime = C:\Users\username\AppData\Roaming\JWrapper-APPNAME (UAT)\JWrapper-Windows64JRE-00046316492-complete 
+0  [Launcher] JRE path is C:\Users\username\AppData\Roaming\JWrapper-APPNAME (UAT)\JWrapper-Windows64JRE-00046316492-complete 
+0  [JNILaunch] Bin folder is C:\Users\username\AppData\Roaming\JWrapper-APPNAME (UAT)\JWrapper-Windows64JRE-00046316492-complete\bin 
+0  File exists: C:\Users\username\AppData\Roaming\JWrapper-APPNAME (UAT)\JWrapper-Windows64JRE-00046316492-complete\bin\server\jvm.dll 
+0  [JNILaunch] Trying to load library C:\Users\username\AppData\Roaming\JWrapper-APPNAME (UAT)\JWrapper-Windows64JRE-00046316492-complete\bin\server\jvm.dll [exists=1] 
+1  [JNILaunch] Unable to load library. Will attempt fallback. 
+0  [JNILaunch] Trying to load library C:\Users\username\AppData\Roaming\JWrapper-APPNAME (UAT)\JWrapper-Windows64JRE-00046316492-complete\bin\client\jvm.dll [exists=0] 
+0  [JNILaunch] Unable to load second library. 
+0  [JNILaunch] [ERROR] Unable to load JRE library! 

ответ

0

ПРИМЕЧАНИЕ: Это временное решение, а не исправление этой проблемы.

Если кто-то наткнулся на эту проблему, один обходной путь является использование 32 бита для Windows JRE.

Как можно заметить в журнале, когда JWrapper запускает запуск JNI, он сначала попробует «серверную» JVM (...\bin\server\jvm.dll), которая присутствует в 64-битной JRE.

И после этого, после того, как он по какой-то причине потерпел неудачу (JWrapper не предоставляет никакой полезной информации об этом), JWrapper попытается загрузить «клиентскую» JVM (...\bin\client\jvm.dll).

«Клиент» JVM не существует в 64-битной JRE (и его нет на протяжении веков, не уверен, почему JWrapper все еще пытается его загрузить).

Теперь, если вы используете 32-бит версию, вы должны заметить изменения в журнале:

++++++++++++++++++++++++++++++++++++++++++++++++ 
[JNILaunch] Bin folder is C:\Users\IEUser\AppData\Roaming\JWrapperApp\JWrapper-Windows64JRE-00046325420-complete\bin 
[JNILaunch] Trying to load library C:\Users\IEUser\AppData\Roaming\JWrapperApp\JWrapper-Windows64JRE-00046325420-complete\bin\server\jvm.dll [exists=0] 
[JNILaunch] Unable to load library. Will attempt fallback. 
File exists: C:\Users\IEUser\AppData\Roaming\JWrapperApp\JWrapper-Windows64JRE-00046325420-complete\bin\client\jvm.dll 
[JNILaunch] Trying to load library C:\Users\IEUser\AppData\Roaming\JWrapperApp\JWrapper-Windows64JRE-00046325420-complete\bin\client\jvm.dll [exists=1] 
[JNILaunch] Unable to load second library. 
[JNILaunch] [ERROR] Unable to load JRE library! 
[Extractor] Return code for JNI launch was 1 
------------------------------------------------ 
--- End: JNI Launch 

------------------------------------------------ 
[Extractor] JNI launch failed. Attempting legacy spawn instead 
[Extractor] Attempting spawn launch 
++++++++++++++++++++++++++++++++++++++++++++++++ 
+++ Start: Spawn launch 

++++++++++++++++++++++++++++++++++++++++++++++++ 
[Utils] Closing logging file. 

Сейчас ситуация переворачивается, «сервер» JVM не найден и " клиент "(как и ожидалось).

JWrapper по-прежнему не может загрузить его, хотя он по-прежнему не содержит никакой полезной информации о том, почему он не может быть загружен.

Главное отличие состоит в том, что, хотя JWrapper не может загрузить клиентскую JVM, вместо этого он попытается использовать альтернативный образ, который хорошо работает в моем случае.

Смежные вопросы