2016-10-17 56 views
1

我正在運行Gluon/charm版本3.0.0。我添加了一個Java8編譯庫添加到我的JavaFX項目(通過的IntelliJ插件創建),並在iOS上它的工作原理,並建立符合市場預期,但在執行gradle這個任務時androidandroidInstall我得到這個錯誤回:InvokeDynamic在爲Android構建時不支持

[ant:java] Java Result: 1 
:createMainDexList FAILED 

FAILURE: Build failed with an exception. 

* What went wrong: 
Execution failed for task ':createMainDexList'. 
> Exception in thread "main" com.android.dx.cf.iface.ParseException: InvokeDynamic not supported 
    at com.android.dx.cf.cst.ConstantPoolParser.determineOffsets(ConstantPoolParser.java:226) 
    at com.android.dx.cf.cst.ConstantPoolParser.parse(ConstantPoolParser.java:132) 
    at com.android.dx.cf.cst.ConstantPoolParser.parseIfNecessary(ConstantPoolParser.java:124) 
    at com.android.dx.cf.cst.ConstantPoolParser.getPool(ConstantPoolParser.java:115) 
    at com.android.dx.cf.direct.DirectClassFile.parse0(DirectClassFile.java:491) 
    at com.android.dx.cf.direct.DirectClassFile.parse(DirectClassFile.java:406) 
    at com.android.dx.cf.direct.DirectClassFile.parseToEndIfNecessary(DirectClassFile.java:397) 
    at com.android.dx.cf.direct.DirectClassFile.getAttributes(DirectClassFile.java:311) 
    at com.android.multidex.MainDexListBuilder.hasRuntimeVisibleAnnotation(MainDexListBuilder.java:191) 
    at com.android.multidex.MainDexListBuilder.keepAnnotated(MainDexListBuilder.java:167) 
    at com.android.multidex.MainDexListBuilder.<init>(MainDexListBuilder.java:121) 
    at com.android.multidex.MainDexListBuilder.main(MainDexListBuilder.java:91) 
    at com.android.multidex.ClassReferenceListBuilder.main(ClassReferenceListBuilder.java:58) 
...while preparsing cst 0002 at offset 0000000f 
...while parsing de/<removed>/traffic_light/library/Test.class 

我覺得有點奇怪的是,我甚至沒有針對traffic_light的Test類,即使在庫中也沒有。搜索錯誤我發現它可能需要Java 8來調用Dynamic/Support Lambdas,但例如,Gluon的Presenter本身使用Lambdas。

另外,谷歌搜索我找到this hit about the same issue,但不幸的是,膠子刪除了他們的論壇和頁面沒有緩存在任何地方。

回答

5

通常,當您向使用lambda表達式的項目添加一些第三方依賴項時會發生此錯誤,因爲目前retrolambda插件僅應用於項目的源代碼。

你可以試試:

  1. 刪除的依賴,增加它的源代碼來代替。

  2. 將retrolambda應用到原始依賴項,然後將其添加到您的項目中。

  3. 或者使用最新的jfxmobile插件:1.0.10-SNAPSHOT將retrolambda應用於源代碼和第三方依賴項(即使沒有提供源代碼)。

對於最後一個選項,只是改變你的build.gradle文件的頂部jfxmobile插件版本:

buildscript { 
    repositories { 
     jcenter() 
     maven { 
      url "https://oss.sonatype.org/content/repositories/snapshots/" 
     } 
    } 
    dependencies { 
     classpath 'org.javafxports:jfxmobile-plugin:1.0.10-SNAPSHOT' 
    } 
} 
+1

作爲安卓3.0.0工作室的,你放心,同時具有全Java8支持刪除RetroLambda - 也對於依賴關係,所以這個錯誤不應該再發生。 –

相關問題