我正在运行Gluon / charm 3.0.0版。我在我的JavaFX项目中添加了一个Java8编译的库(通过IntelliJ插件创建),在iOS上它按预期工作和构建,但在执行gradle任务android
或androidInstall
时,我收到此错误:
[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来调用动态/支持Lambdas,但是例如Gluon的Presenter本身使用Lambdas。
此外,谷歌搜索我发现this hit about the same issue但令人遗憾的是Gluon删除了他们的论坛,页面没有缓存在任何地方。
答案 0 :(得分:5)
通常,当您向使用lambda表达式的项目添加一些第三方依赖项时会发生此错误,因为目前retrolambda插件仅应用于项目的源代码。
您可以尝试:
删除该依赖项并改为添加其源代码。
将retrolambda应用于原始依赖项,然后将其添加到项目中。
或者使用最新的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'
}
}