2016-11-22 13 views
-1
buildscript { 
    repositories { 
     jcenter() 

    } 
    dependencies { 
     classpath 'org.javafxports:jfxmobile-plugin:1.1.1' 
    } 
} 

apply plugin: 'org.javafxports.jfxmobile' 

repositories { 
    jcenter() 
    maven { 
     url 'https://mvnrepository.com/artifact/com.caucho/hessian' 
    } 
    maven { 
     url'http://nexus.gluonhq.com/nexus/content/repositories/releases' 
    } 
} 

mainClassName = 'com.demoapp.DemoApp' 

dependencies { 

    compile 'com.gluonhq:charm:4.1.0' 
    compile 'com.airhacks:afterburner.mfx:1.6.2' 
    compile 'com.caucho:hessian:4.0.7' 
    compile 'com.google.code.gson:gson:2.3.1' 
    compile 'org.apache.poi:poi:3.9' 
} 

jfxmobile { 
    downConfig { 
     version '3.0.0' 
     plugins 'display', 'lifecycle', 'statusbar', 'storage' 
    } 

    android { 
     manifest = 'src/android/AndroidManifest.xml' 
    } 
    ios { 

     infoPList = file('src/ios/Default-Info.plist') 
     forceLinkClasses = [ 
      'com.demoapp.**.*', 
      'com.gluonhq.**.*', 
      'io.datafx.**.*', 
      'javax.annotations.**.*', 
      'javax.inject.**.*', 
      'javax.json.**.*', 
      'org.glassfish.json.**.*', 
      'com.caucho.**.*', 
      'com.google.code.gson.**.*', 
      'org.apache.poi.**.*' 

     ] 
    } 
} 

Исключение ошибок в заявке метода инициализации QuantumRenderer: выключение java.lang.RuntimeException: Исключение в методе инициализации приложения на com.sun.javafx.application.LauncherImpl.launchApplication1 (LauncherImpl.java:109069952) at com.sun.javafx.application.LauncherImpl.lambda $ launchApplication $ 156 (LauncherImpl.java:109069952) at com.sun.javafx.application.LauncherImpl $$ Lambda $ 2.run (Неизвестный источник) на java.lang.Thread .run (Thread.java:109069952) Вызвано: java.lang.NoSuchMethodError: com.demoapp.DemoApp $$ Lambda $ 1.() V at com.demoapp.DemoApp.init (DemoApp.java:109070784)на com.sun.javafx.application.LauncherImpl.launchApplication1 (LauncherImpl.java:109070784) в com.sun.javafx.application.LauncherImpl.lambda $ LaunchApplication $ 156 (LauncherImpl.java:109070784) в com.sun.javafx .application.LauncherImpl $$ Lambda $ 2.run (Unknown Source) на java.lang.Thread.run (Thread.java:109070784)Запуск iOS сбой при инициализации. Работает локально

Любая идея, где искать инициализации ошибок при развертывании ..? Благодарю.

INIT:

@Override 
public void init() { 

    NavigationDrawer drawer = new NavigationDrawer(); 

    NavigationDrawer.Header header = new NavigationDrawer.Header("demo inc", "smart teamwork", new Avatar(21, new Image(DemoApp.class.getResourceAsStream("/icon.png")))); 
    drawer.setHeader(header); 

    drawer.getItems().addAll(primaryItem, secondaryItem, thirdItem); 

    primaryItem.setSelected(true); 

    addViewFactory(PRIMARY_VIEW,() -> (View) new PrimaryView().getView()); 
    addViewFactory(SECONDARY_VIEW,() -> (View) new SecondaryView().getView()); 
    addViewFactory(THIRD_VIEW,() -> (View) new ThirdView().getView()); 
    addLayerFactory(MENU_LAYER,() -> new SidePopupView(drawer)); 

} 

@Override 
public void postInit(Scene scene) { 
    Swatch.ORANGE.assignTo(scene); 

    scene.getStylesheets().add(DemoApp.class.getResource("style.css").toExternalForm()); 
    ((Stage) scene.getWindow()).getIcons().add(new Image(DemoApp.class.getResourceAsStream("/icon.png"))); 

    switchView(SECONDARY_VIEW); 
} 
+0

Вы можете попробовать с '' com.airhacks: afterburner.mfx: 1.6.3''? –

+0

спасибо за подсказку. но это все та же ошибка. любая другая идея? – tonimaroni

+0

Плагин jfxmobile с 1.1.0 применяет retrolambda ко всем зависимостям. Если какой-либо из них уже применяется, это не сработает. Чтобы убедиться, что ни один из них не использует, замените 'compile' на' compileNoRetrolambda' в hessian, gson и poi. Charm 4.1.0 и afterburner 1.6.3 не используют retrolambda уже. –

ответ

1

Исключение показывает, что лямбда-выражение не удается. Вероятно, в вашем методе init с представлением поставщиков.

Возможные причины этого исключения являются:

Retrolambda

jfxmobile плагин с версии 1.1.0 applies retrolambda всех зависимостей. Но вы не можете применить его дважды.

Первым шагом будет проверка того, какие зависимости могут использовать retrolambda.

Charm 4+ не использует его. Afterburner 1.6.2 делает, так что либо изменить его на:

dependencies { 
    compileNoRetrolambda 'com.airhacks:afterburner.mfx:1.6.2' 
} 

или использовать новую версию, которая исключает его:

dependencies { 
    compile 'com.airhacks:afterburner.mfx:1.6.3' 
} 

Чтобы убедиться, что ни один из других зависимостей использовать его, заменить compile с compileNoRetrolambda в hessian, gson и poi.

Cache

Кроме того, при обновлении проектов с более низкими версиями jfxmobile плагином, вполне возможно, что у Вас есть предыдущая сборка на кэш. Это может содержать классы, которые вы скомпилировали с помощью retrolambda.

Хотя код тот же, Gradle пропустит их компиляцию снова, но когда плагин retrolambda снова будет применен поверх них, это не удастся.

Чтобы избежать этой проблемы, простое решение использует clean перед созданием и развертыванием вашего проекта: Запустите ./gradlew clean launchIOSDevice.