2017-05-05 12 views
0

我想寫一個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遇到過這個問題?有關如何解決該問題的任何想法?

回答

0

看起來Android Studio對庫中Java 8功能的支持並不完整。

我已經與Android 2.4工作室7預覽實驗,編制爲我的項目失敗,同樣的錯誤,當我鏈接包含使用方法參考功能這個簡單的類庫:

public class LambdaTest { 

    public void test() { 
     Runnable runnable = this::run; 
     runnable.run(); 
    } 

    public void run() { 
    } 

} 

一種解決方法是把你的庫的源直接放到主要的Android模塊中(如果這些源可用並且許可證允許的話)。或者,等待Android Studio更新應解決此問題。

+0

您是否嘗試使用傑克工具鏈構建? – SDG99

+0

Jack對Java 8庫沒有(也不會有)支持,請參閱https://issuetracker.google.com/issues/37101513 – zakgof

+0

似乎是這樣。我能夠使用Jack生成APK,但是neo4j對Java庫有依賴性,也就是說, MangementFactory,它只能在JVM上運行。 – SDG99

相關問題