2017-05-05 2 views
0

私は、neo4j埋め込みグラフデータベースのAPIを使用するAndroidアプリケーションを作成しようとしています。このアプリを開発するには、Java 8をサポートするAndroidスタジオpreview versionを使用しています。建物は適切に処理されています。しかし、私は、ターゲット上でアプリケーションを実行しようとしていたとき、私はGradleのコンソールで次のエラーを取得しています:Androidでライブラリとしてneo4jをビルドするアプリケーション

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エラーが主に発生したことを知っているようになりましたラムダに依存する第三者のライブラリを使用する。しかし、私はAndroidスタジオのプレビュー版を使用しているので、Java 8をサポートしています、ラムダは働いていないはずですか?

Neo4jでこの問題に直面した人はいますか?どのように問題に対処するための任意のアイデア?

答えて

0

Android Studioのように、ライブラリ内のJava 8の機能がサポートされていないようです。

public class LambdaTest { 

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

    public void run() { 
    } 

} 

回避策:私はメソッド参照機能を使用して、この単純なクラスを含むライブラリをリンクする際

は、私は、Android Studioの2.4のプレビュー7を試してきました、私のプロジェクトのためのコンパイルが同じエラーで失敗しますあなたのライブラリのソースを主要なAndroidモジュールに直接置くことです(それらのソースが利用可能でライセンスに許可されている場合)。または、この問題に対処する必要があるAndroid Studioの更新を待ちます。

+0

あなたはジャックのツールチェーンでビルドを試しましたか? – SDG99

+0

JackはJava 8ライブラリをサポートしていません(また、Java 8ライブラリをサポートすることもありません)。https://issuetracker.google.com/issues/37101513 – zakgof

+0

を参照してください。私はJackを使ってAPKを生成することができましたが、neo4jはJavaライブラリに依存していました。 MangementFactoryは、JVM上でのみ実行されます。 – SDG99

関連する問題