2017-11-10 11 views
2

최근에 로컬 간단한 주석 프로세서를 도입 한 AS3/gradle plugin 3 프로젝트가 있습니다. gradles annotationProcessor dependancy 지시어로 잘 작동합니다.Android kotlin 프로젝트에서 로컬 주석 프로세서를 사용할 수 없습니다.

나는 Kotlin 코드를 추가하기 시작했고 모든 annotationProcessor 지시문을 kapt 코드로 옮겼다. 글라이드와 로건 스퀘어 코 틀린에 사용 주석 프로세서를 문제없이,하지만 우리 지역 AP 프로젝트는 kapt에 의해 실행 할 수 없습니다

:app:kaptGenerateStubsDebugKotlin 
Using Kotlin incremental compilation 

e: java.util.ServiceConfigurationError: javax.annotation.processing.Processor: Error reading configuration file 
    at java.util.ServiceLoader.fail(ServiceLoader.java:232) 
    at java.util.ServiceLoader.parse(ServiceLoader.java:309) 
    at java.util.ServiceLoader.access$200(ServiceLoader.java:185) 
    at java.util.ServiceLoader$LazyIterator.hasNextService(ServiceLoader.java:357) 
    at java.util.ServiceLoader$LazyIterator.hasNext(ServiceLoader.java:393) 
    at java.util.ServiceLoader$1.hasNext(ServiceLoader.java:474) 
    at kotlin.collections.CollectionsKt___CollectionsKt.toCollection(_Collections.kt:1042) 
    at kotlin.collections.CollectionsKt___CollectionsKt.toMutableList(_Collections.kt:1075) 
    at kotlin.collections.CollectionsKt___CollectionsKt.toList(_Collections.kt:1066) 
    at org.jetbrains.kotlin.kapt3.ClasspathBasedKapt3Extension.loadProcessors(Kapt3Extension.kt:92) 
    at org.jetbrains.kotlin.kapt3.AbstractKapt3Extension.analysisCompleted(Kapt3Extension.kt:160) 
    at org.jetbrains.kotlin.kapt3.ClasspathBasedKapt3Extension.analysisCompleted(Kapt3Extension.kt:82) 
    at org.jetbrains.kotlin.cli.jvm.compiler.TopDownAnalyzerFacadeForJVM$analyzeFilesWithJavaIntegration$2.invoke(TopDownAnalyzerFacadeForJVM.kt:96) 
    at org.jetbrains.kotlin.cli.jvm.compiler.TopDownAnalyzerFacadeForJVM.analyzeFilesWithJavaIntegration(TopDownAnalyzerFacadeForJVM.kt:106) 
    at org.jetbrains.kotlin.cli.jvm.compiler.TopDownAnalyzerFacadeForJVM.analyzeFilesWithJavaIntegration$default(TopDownAnalyzerFacadeForJVM.kt:83) 
    at org.jetbrains.kotlin.cli.jvm.compiler.KotlinToJVMBytecodeCompiler$analyze$1.invoke(KotlinToJVMBytecodeCompiler.kt:377) 
    at org.jetbrains.kotlin.cli.jvm.compiler.KotlinToJVMBytecodeCompiler$analyze$1.invoke(KotlinToJVMBytecodeCompiler.kt:68) 
    at org.jetbrains.kotlin.cli.common.messages.AnalyzerWithCompilerReport.analyzeAndReport(AnalyzerWithCompilerReport.kt:96) 
    at org.jetbrains.kotlin.cli.jvm.compiler.KotlinToJVMBytecodeCompiler.analyze(KotlinToJVMBytecodeCompiler.kt:368) 
    at org.jetbrains.kotlin.cli.jvm.compiler.KotlinToJVMBytecodeCompiler.compileModules(KotlinToJVMBytecodeCompiler.kt:133) 
    at org.jetbrains.kotlin.cli.jvm.K2JVMCompiler.doExecute(K2JVMCompiler.kt:154) 
    at org.jetbrains.kotlin.cli.jvm.K2JVMCompiler.doExecute(K2JVMCompiler.kt:58) 
    at org.jetbrains.kotlin.cli.common.CLICompiler.execImpl(CLICompiler.java:103) 
    at org.jetbrains.kotlin.cli.common.CLICompiler.execImpl(CLICompiler.java:51) 
    at org.jetbrains.kotlin.cli.common.CLITool.exec(CLITool.kt:92) 
    at org.jetbrains.kotlin.incremental.IncrementalJvmCompilerRunner.runCompiler(IncrementalJvmCompilerRunner.kt:303) 
    at org.jetbrains.kotlin.incremental.IncrementalJvmCompilerRunner.runCompiler(IncrementalJvmCompilerRunner.kt:85) 
    at org.jetbrains.kotlin.incremental.IncrementalCompilerRunner.compileIncrementally(IncrementalCompilerRunner.kt:213) 
    at org.jetbrains.kotlin.incremental.IncrementalCompilerRunner.access$compileIncrementally(IncrementalCompilerRunner.kt:37) 
    at org.jetbrains.kotlin.incremental.IncrementalCompilerRunner$compile$2.invoke(IncrementalCompilerRunner.kt:74) 
    at org.jetbrains.kotlin.incremental.IncrementalCompilerRunner.compile(IncrementalCompilerRunner.kt:87) 
    at org.jetbrains.kotlin.daemon.CompileServiceImpl.execIncrementalCompiler(CompileServiceImpl.kt:512) 
    at org.jetbrains.kotlin.daemon.CompileServiceImpl.access$execIncrementalCompiler(CompileServiceImpl.kt:96) 
    at org.jetbrains.kotlin.daemon.CompileServiceImpl$compile$$inlined$ifAlive$lambda$2.invoke(CompileServiceImpl.kt:399) 
    at org.jetbrains.kotlin.daemon.CompileServiceImpl$compile$$inlined$ifAlive$lambda$2.invoke(CompileServiceImpl.kt:96) 
    at org.jetbrains.kotlin.daemon.CompileServiceImpl$doCompile$$inlined$ifAlive$lambda$2.invoke(CompileServiceImpl.kt:889) 
    at org.jetbrains.kotlin.daemon.CompileServiceImpl$doCompile$$inlined$ifAlive$lambda$2.invoke(CompileServiceImpl.kt:96) 
    at org.jetbrains.kotlin.daemon.common.DummyProfiler.withMeasure(PerfUtils.kt:137) 
    at org.jetbrains.kotlin.daemon.CompileServiceImpl.checkedCompile(CompileServiceImpl.kt:916) 
    at org.jetbrains.kotlin.daemon.CompileServiceImpl.doCompile(CompileServiceImpl.kt:888) 
    at org.jetbrains.kotlin.daemon.CompileServiceImpl.compile(CompileServiceImpl.kt:398) 
    at sun.reflect.GeneratedMethodAccessor87.invoke(Unknown Source) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:498) 
    at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:346) 
    at sun.rmi.transport.Transport$1.run(Transport.java:200) 
    at sun.rmi.transport.Transport$1.run(Transport.java:197) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at sun.rmi.transport.Transport.serviceCall(Transport.java:196) 
    at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:568) 
    at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:826) 
    at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.lambda$run$0(TCPTransport.java:683) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:682) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 
    at java.lang.Thread.run(Thread.java:745) 
Caused by: java.io.FileNotFoundException: JAR entry META-INF/services/javax.annotation.processing.Processor not found in /Users/kread/git/bgo/myrmecophaga-2.0/ejecta-v8/v8annotations-compiler/build/libs/v8annotations-compiler.jar 
    at sun.net.www.protocol.jar.JarURLConnection.connect(JarURLConnection.java:144) 
    at sun.net.www.protocol.jar.JarURLConnection.getInputStream(JarURLConnection.java:152) 
    at java.net.URL.openStream(URL.java:1045) 
    at java.util.ServiceLoader.parse(ServiceLoader.java:304) 
    ... 55 more 


:app:kaptGenerateStubsDebugKotlin FAILED 

생성 된 JAR 파일하지만 필요한 META-INF의 JAR 항목이 :

주요 모듈 build.gradle에서
# jar tf /Users/kread/git/bgo/myrmecophaga-2.0/ejecta-v8/v8annotations-compiler/build/libs/v8annotations-compiler.jar 
META-INF/ 
META-INF/MANIFEST.MF 
ag/ 
ag/boersego/ 
ag/boersego/v8annotations/ 
ag/boersego/v8annotations/compiler/ 
ag/boersego/v8annotations/compiler/V8AnnotationProcessor$1.class 
ag/boersego/v8annotations/compiler/V8AnnotationProcessor$AccessorTuple.class 
ag/boersego/v8annotations/compiler/V8AnnotationProcessor$AnnotationHolder.class 
ag/boersego/v8annotations/compiler/V8AnnotationProcessor.class 
META-INF/services/ 
META-INF/services/javax.annotation.processing.Processor 

발췌 :

dependencies { 
    // gazillions of compile/api/... 
    api project(':ejecta-v8:v8annotations') 
    kapt project(':ejecta-v8:v8annotations-compiler') 
} 

모듈 v8annotations build.gradle :

apply plugin: 'java-library' 

sourceCompatibility = 1.8 
targetCompatibility = 1.8 

dependencies {} 

모듈 v8annotations - 컴파일러 build.gradle :

apply plugin: 'java' 

sourceCompatibility = 1.8 
targetCompatibility = 1.8 

dependencies { 
    compile project(':ejecta-v8:v8annotations') 
    compile fileTree(dir: 'libs', include: ['*.jar']) 
} 

이 나는 ​​난처한 해요 :(

+0

작동 'GradleDaemon'과'KotlinCompileDaemon') 도움이됩니다. 'jps' 쉘 명령을 사용하여 PID를 찾을 수 있습니다. 프로젝트 로컬 주석 프로세서를 사용하는 방법에 대한 예를 확인하고 https://github.com/JetBrains/kotlin-examples/tree/master/gradle/kotlin-code-generation이 누락되었는지 확인하십시오. – yanex

답변

1

내가 여러 번 비슷한 문제가 있었다. 나는

pkill gradle 
pkill java 

의 조합을 시도하고 .idea/workspace.xml의 안드로이드 스튜디오 설치와 * .iml 파일을 삭제. 이 문제로 이어지는 캐시 된 상태 인 것으로 보입니다. @tynn 제안으로

+0

감사합니다. 그것은 gradle 데몬 (pkill gradle)을 죽일만큼 충분했습니다. –

0

내 경우는 안드로이드 스튜디오 콘솔에서

gradlew --stop 

을 실행하는 데 충분했다

0

그것은 Gradle을 데몬 (특히, Java 프로세스를 죽이고, 나를

pkill gradle 
clean project 
make project