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

     ] 
    } 
} 

エラー例外:シャットダウン java.lang.RuntimeException:com.sun.javafx.application.LauncherImpl.launchApplication1でのアプリケーションのinitメソッド の例外(LauncherImpl.java:109069952) com.sun.javafx.application.LauncherImpl.lambda $ launchApplication $ 156(LauncherImpl.java:109069952) 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でcom.sun.javafxで$ 156(LauncherImpl.java:109070784) .application.LauncherImpl $$ Lambda $ 2.run(Unknown Source) at java.lang.Thread.run(Thread.java:109070784)起動時にiOSが起動しない。実行するアプリケーションinitメソッド QuantumRendererでローカルに

デプロイ時にinit-Errorをどこから検索すればいいですか?ありがとう。

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'をhessian、gson、poiの' compileNoRetrolambda'に置き換えてください。 Charm 4.1.0とAfterburner 1.6.3はretrolambdaを既に使用していません。 –

答えて

1

例外は、ラムダ式が失敗していることを示しています。おそらくあなたのinitの方法のものを表示サプライヤと比較します。この例外の

考えられる理由は以下のとおりです。すべての依存関係にバージョン1.1.0 applies retrolambda以来

Retrolambda

jfxmobileプラグイン。しかし、それを二度適用することはできません。

最初の手順は、どの依存関係がretrolambdaを使用するかを調べることです。

チャーム4+は使用していません。アフターバーナー1.6.2はありませんので、あなたはそれを変更し、次のいずれか

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

またはあなたがそれを除外ブランドの新しいバージョンを使用します、他の依存関係のどれもがそれを使用しないことを確認し交換するには

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

compileであり、ヘッセian、gsonおよびpoiでcompileNoRetrolambdaである。

キャッシュまた

、jfxmobileプラグインの下のバージョンでプロジェクトを更新するとき、それはあなたがあなたのキャッシュに以前のビルドを持っている可能性があります。これには、retrolambdaでコンパイルしたクラスが含まれている可能性があります。

コードは同じですが、Gradleはそれらを再度コンパイルするのをスキップしますが、retrolambdaプラグインを再度適用すると失敗します。

この問題を回避するには、プロジェクトをビルドおよび展開する前にcleanを使用するのが簡単な解決策です。./gradlew clean launchIOSDeviceを実行してください。

関連する問題