JVM在注释处理后永远不会终止;必须在每次构建之前清理

时间:2015-09-26 20:22:26

标签: java android android-studio gradle annotations

我已经为我的Android项目添加了注释处理器。它运行时没有错误并产生预期的结果。但是,我有两个问题正在减缓我的发展。

首先,每次我做项目时我都要先清理,否则我会

error: Bad service configuration file, or exception thrown while constructing Processor object: javax.annotation.processing.Processor: Error reading configuration file

第二个是当我尝试清洁时,我得到了

Error:Execution failed for task ':processor:clean'.
Unable to delete file: D:\Users\Tony\AndroidProjects\Minder\processor\build\libs\processor.jar

这似乎是因为注释处理器运行的JVM永远不会终止。如果我进入任务管理器(在Windows上工作)并关闭" Java Platform SE二进制文件"过程中,我能够无误地清理。在我清理之后,一切都运行良好。

这是我的app模块的gradle.build:

apply plugin: 'com.android.application'
apply plugin: 'com.neenbedankt.android-apt'

android {
compileSdkVersion 22
buildToolsVersion "22.0.1"
defaultConfig {
    applicationId "us.bridgeses.minder"
    minSdkVersion 16
    targetSdkVersion 22
    versionCode 22
    versionName "2.0-beta"
}
buildTypes {
    release {
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }
    debug {
        applicationIdSuffix '.debug'
        versionNameSuffix '-debug'
    }
}
packagingOptions {
    exclude 'LICENSE.txt'
    exclude 'META-INF/LICENSE.txt'
    exclude 'META-INF/services/javax.annotation.processing.Processor'
}
}

dependencies {
compile project(':processor')
compile project(':annotations')
compile 'com.android.support:appcompat-v7:22.2.1'
compile 'com.android.support:support-v4:22.2.1'
compile 'com.getbase:floatingactionbutton:1.10.0'
compile 'com.google.code.gson:gson:2.3.1'
compile 'org.reflections:reflections:0.9.10'
compile 'com.h6ah4i.android.materialshadowninepatch:materialshadowninepatch:0.6.3'
androidTestCompile 'junit:junit:4.11'
androidTestCompile('com.android.support.test:testing-support-lib:0.1') {
    exclude group: 'junit'  // junit:junit-dep conflicts with junit:unit
}
testCompile 'org.robolectric:robolectric:3.0'
testCompile 'org.robolectric:shadows-support-v4:3.0'
}

1 个答案:

答案 0 :(得分:0)

作为完成注释处理器的解决方案,您可以使用.jar compiler文件而不是整个项目。使用jar将使您能够毫无问题地清理项目。只需将您的compiler.jar添加到libs文件夹,然后将compile project(':processor')替换为apt files('libs/compiler.jar')

但我没有找到修改compiler项目的解决方案,并在没有clean的情况下测试更改并终止“Java Platform SE二进制”过程