2016-10-17 3 views
1

Я запускаю Gluon/charm version 3.0.0. Я добавил Java8 скомпилированные библиотеки в мой проект JavaFX (созданный с помощью плагина IntelliJ) и прошивкой работает и строит, как и ожидалось, но при выполнении Gradle задач android или androidInstall я получаю эту ошибку обратно: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 

То, что я нахожу немного странным, состоит в том, что у меня даже нет класса Test для traffic_light, даже в библиотеке. В поисках ошибки я обнаружил, что, вероятно, требуется Java 8 для invokeDynamic/Support Lambdas, но, например, сам Presenter Gluon использует Lambdas.

Кроме того, googling я нахожу this hit about the same issue, но, к сожалению, Gluon удалил свой форум, и страница не кэширована нигде.

ответ

5

Обычно эта ошибка возникает при добавлении сторонних зависимостей к проекту, использующим лямбда-выражения, поскольку в настоящее время плагин retrolambda применяется только к исходному коду вашего проекта.

Вы можете попробовать:

  1. Удалить эту зависимость и добавить его исходный код вместо.

  2. Применить retrolambda к исходной зависимости, а затем добавить ее в свой проект.

  3. Или используйте самый последний плагин jfxmobile: 1.0.10-SNAPSHOT применит retrolambda как к исходному коду, так и к зависимостям сторонних разработчиков (даже если исходный код не предоставляется).

Для последнего варианта, просто измените jfxmobile версию плагина поверх вашего build.gradle файла:

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

Как из Android Studio 3.0.0, вы безопасно удалить RetroLambda, имея полную поддержку Java8 - также для зависимостей, поэтому эта ошибка больше не должна возникать. –

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