2016-11-22 6 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.**.*' 

     ] 
    } 
} 

Fehlerausnahme in Application Init-Methode QuantumRenderer: shutdown java.lang.RuntimeException: Exception in Application Methode Init bei com.sun.javafx.application.LauncherImpl.launchApplication1 (LauncherImpl.java:109069952) unter com.sun.javafx.application.LauncherImpl.lambda $ launchApplication $ 156 (LauncherImpl.java:109069952) unter com.sun.javafx.application.LauncherImpl $$ Lambda $ 2.run (Unbekannte Quelle) bei java.lang.Thread .run (Thread.java:109069952) verursacht durch: java.lang.NoSuchMethodError: com.demoapp.DemoApp $$ Lambda $ 1.() V bei com.demoapp.DemoApp.init (DemoApp.java:109070784) bei com.sun.javafx.application.LauncherImpl.launchApplication1 (LauncherImpl.java:109070784) bei com.sun.javafx.application.LauncherImpl.lambda $ launch $ 156 (LauncherImpl.java:109070784) bei com.sun.javafx .application.LauncherImpl $$ Lambda $ 2.run (Unknown Source) bei java.lang.Thread.run (Thread.java:109070784)Starten von iOS schlägt bei der Initialisierung fehl. Läuft lokal

Jede Idee, wo für die init-Fehler zu suchen, wenn die Bereitstellung ..? Vielen Dank.

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

Können Sie versuchen mit ''com.airhacks: afterburner.mfx: 1.6.3''? –

+0

danke für den Hinweis. aber es ist immer noch derselbe Fehler. eine andere Idee als das? – tonimaroni

+0

Das jfxmobile Plugin seit 1.1.0 wendet RetroLambda auf alle Abhängigkeiten an. Wenn einer von ihnen bereits angewendet wurde, wird das fehlschlagen. Um sicherzustellen, dass keine von ihnen verwendet, ersetzen Sie 'kompilieren' durch' compileNoRetrolambda' in hessian, gson und poi. Charm 4.1.0 und Nachbrenner 1.6.3 verwenden retrolamda nicht bereits. –

Antwort

1

Die Ausnahme zeigt, dass ein Lambda-Ausdruck versagt. Wahrscheinlich die in Ihrer init Methode mit den View-Lieferanten.

Mögliche Gründe für diese Ausnahme sind:

Retrolambda

Die jfxmobile Plugin ab Version 1.1.0 applies retrolambda allen Abhängigkeiten. Aber du kannst es nicht zweimal anwenden.

Der erste Schritt wird prüfen, welche Abhängigkeiten RetroLabda verwenden können.

Charm 4+ verwendet es nicht. 1.6.2 Nachbrenner tut, also entweder Sie ändern es:

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

oder verwenden Sie die brandneue Version, die es ausschließt:

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

Um sicherzustellen, dass keine der anderen Abhängigkeiten verwenden Sie es zu machen, ersetzen compile mit compileNoRetrolambda in hessischen, gson und poi.

Cache

Auch wenn Projekte mit niedrigeren Versionen des jfxmobile Plugin aktualisiert wird, ist es möglich, dass Sie einen vorherigen Build auf Ihrem Cache. Dies könnte Klassen enthalten, die Sie mit RetroLambda kompiliert haben.

Während der Code identisch ist, überspringt Gradle sie erneut zu kompilieren, aber wenn das RetroLambda-Plugin erneut über sie angewendet wird, wird dies fehlschlagen.

Um dieses Problem zu vermeiden, verwendet eine einfache Lösung clean, bevor Sie Ihr Projekt erstellen und bereitstellen: Führen Sie ./gradlew clean launchIOSDevice aus.

Verwandte Themen