我想寫一個Android應用程序將使用neo4j嵌入式圖形數據庫的API。爲了開發應用程序,我使用的是支持Java 8的Android Studio preview version。大樓正在正常運行。然而,當我試圖運行在目標上的應用程序,我收到以下錯誤在gradle這個控制檯:在neo4j作爲庫建設應用程序在Android中的
Error:Error converting bytecode to dex:
Cause: InvokeDynamic not supported
Error:java.lang.RuntimeException: com.android.dx.cf.iface.ParseException: InvokeDynamic not supported
Error: at com.android.ide.common.internal.WaitableExecutor.waitForTasksWithQuickFail(WaitableExecutor.java:183)
Error: at com.android.builder.dexing.DexArchiveBuilder.processOutputs(DexArchiveBuilder.java:95)
Error: at com.android.builder.dexing.DexArchiveBuilder.convert(DexArchiveBuilder.java:78)
Error: at com.android.build.gradle.internal.transforms.DexArchiveBuilderTransformCallable.lambda$cacheMissAction$0(DexArchiveBuilderTransformCallable.java:240)
Error: at com.android.builder.utils.FileCache.lambda$createFile$1(FileCache.java:260)
Error: at com.android.builder.utils.FileCache.lambda$null$5(FileCache.java:443)
Error: at com.android.builder.utils.SynchronizedFile.doActionWithMultiProcessLocking(SynchronizedFile.java:265)
Error: at com.android.builder.utils.SynchronizedFile.write(SynchronizedFile.java:232)
Error: at com.android.builder.utils.FileCache.lambda$queryCacheEntry$6(FileCache.java:415)
Error: at com.android.builder.utils.SynchronizedFile.doActionWithMultiProcessLocking(SynchronizedFile.java:265)
Error: at com.android.builder.utils.SynchronizedFile.read(SynchronizedFile.java:215)
Error: at com.android.builder.utils.FileCache.queryCacheEntry(FileCache.java:391)
Error: at com.android.builder.utils.FileCache.createFile(FileCache.java:273)
Error: at com.android.build.gradle.internal.transforms.DexArchiveBuilderTransformCallable.getFromCacheAndCreateIfMissing(DexArchiveBuilderTransformCallable.java:187)
Error: at com.android.build.gradle.internal.transforms.DexArchiveBuilderTransformCallable.call(DexArchiveBuilderTransformCallable.java:149)
Error: at com.android.build.gradle.internal.transforms.DexArchiveBuilderTransformCallable.call(DexArchiveBuilderTransformCallable.java:53)
Error: at java.util.concurrent.FutureTask.run(FutureTask.java:266)
Error: at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
Error: at java.util.concurrent.FutureTask.run(FutureTask.java:266)
Error: at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
Error: at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
Error: at java.lang.Thread.run(Thread.java:745)
Error:Caused by: com.android.dx.cf.iface.ParseException: InvokeDynamic not supported
Error: at com.android.dx.cf.cst.ConstantPoolParser.determineOffsets(ConstantPoolParser.java:226)
Error: at com.android.dx.cf.cst.ConstantPoolParser.parse(ConstantPoolParser.java:132)
Error: at com.android.dx.cf.cst.ConstantPoolParser.parseIfNecessary(ConstantPoolParser.java:124)
Error: at com.android.dx.cf.cst.ConstantPoolParser.getPool(ConstantPoolParser.java:115)
Error: at com.android.dx.cf.direct.DirectClassFile.parse0(DirectClassFile.java:491)
Error: at com.android.dx.cf.direct.DirectClassFile.parse(DirectClassFile.java:406)
Error: at com.android.dx.cf.direct.DirectClassFile.parseToInterfacesIfNecessary(DirectClassFile.java:388)
Error: at com.android.dx.cf.direct.DirectClassFile.getMagic(DirectClassFile.java:251)
Error: at com.android.builder.dexing.DexArchiveBuilderCallable.parseClass(DexArchiveBuilderCallable.java:80)
Error: at com.android.builder.dexing.DexArchiveBuilderCallable.call(DexArchiveBuilderCallable.java:66)
Error: at com.android.builder.dexing.DexArchiveBuilderCallable.call(DexArchiveBuilderCallable.java:40)
Error: ... 6 more
Error:Execution failed for task ':app:transformClassesWithDexBuilderForDebug'.
> com.android.build.api.transform.TransformException: java.lang.RuntimeException: java.lang.RuntimeException: java.util.concurrent.ExecutionException: java.util.concurrent.ExecutionException: com.android.builder.utils.FileCache$FileCreatorException: com.android.builder.dexing.DexArchiveBuilder$DexBuilderException: Unable to convert input to dex archive.
我搜索在互聯網,來到知道InvokeDynamic not supported
錯誤主要是發生在我的應用程序試圖使用依賴lambda的第三方庫。然而,因爲我使用的是Android Studio的預覽版,它支持Java 8,所以lambda不應該工作?
有沒有人用Neo4j遇到過這個問題?有關如何解決該問題的任何想法?
您是否嘗試使用傑克工具鏈構建? – SDG99
Jack對Java 8庫沒有(也不會有)支持,請參閱https://issuetracker.google.com/issues/37101513 – zakgof
似乎是這樣。我能夠使用Jack生成APK,但是neo4j對Java庫有依賴性,也就是說, MangementFactory,它只能在JVM上運行。 – SDG99