首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在为Android构建时不支持InvokeDynamic

在为Android构建时不支持InvokeDynamic
EN

Stack Overflow用户
提问于 2016-10-17 06:43:44
回答 1查看 2.1K关注 0票数 1

我在运行胶子/魅力版本3.0.0。我在我的JavaFX项目(通过IntelliJ插件创建)中添加了一个Java8 8编译的库,并在iOS上按预期工作和构建,但是在执行gradle任务androidandroidInstall时,我得到了这个错误:

代码语言:javascript
复制
[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的测试类,甚至在库中也没有。在查找错误时,我发现它可能需要Java 8来进行invokeDynamic/Support Lambdas,但例如胶子的演示器本身使用Lambdas。

此外,谷歌我发现这件事差不多是同一个问题,但遗憾的是胶子删除了他们的论坛和页面没有缓存任何地方。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-10-17 07:19:21

通常,当您将一些第三方依赖项添加到使用lambda表达式的项目时,就会发生此错误,因为目前只对项目的源代码应用了retrolambda插件。

你可以试试:

  1. 移除该依赖项并添加其源代码。
  2. 将retrolambda应用于原始依赖项,然后将其添加到项目中。
  3. 或者使用最新的jfxmobile插件:1.0.10快照将应用于源代码和第三方依赖项(即使没有提供源代码)。

对于最后一个选项,只需更改build.gradle文件之上的jfxmobile版本:

代码语言:javascript
复制
buildscript {
    repositories {
        jcenter()
        maven {
            url "https://oss.sonatype.org/content/repositories/snapshots/"
        }
    }
    dependencies {
        classpath 'org.javafxports:jfxmobile-plugin:1.0.10-SNAPSHOT'
    }
}
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40080002

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档