Gradle JavaExec任务失败,Android Studio中找不到库类未找到错误

时间:2014-10-08 15:04:16

标签: gradle android-studio android-gradle ormlite

我正在尝试在我的android gradle脚本中集成ORMLite数据'编译器'实用程序的运行。从各种来源我已经建立了如何将它放在具有所需依赖关系的构建流程中,以确保它在java编译之后运行,第二个任务将使用aapt在生成的数据库定义文件中更新apk。

我的主要问题是我无法运行OrmLiteConfigUtil扩展类,因为JavaExec任务无法找到OrmLiteConfigUtil类

Error:Gradle: java.lang.ClassNotFoundException: com.j256.ormlite.android.apptools.OrmLiteConfigUtil

任务定义如下

applicationVariants.all { com.android.build.gradle.api.ApplicationVariant variant ->

    def databaseTaskName = "${variant.name.capitalize()}DatabaseCompile"
    def buildDir = getBuildDir()
    def javaCompileTaskName = "compile" + variant.name.capitalize() + "Java"
    def javaTask = project.tasks.findByName("${javaCompileTaskName}")

    task "${databaseTaskName}" (type: JavaExec) {
        main = 'com.barclaycard.bespoke.android.data.local.DatabaseConfigUtil'

        dependencies {
            classpath files("${buildDir}/intermediates/classes/${variant.dirName}")
        }
    }

    if (javaTask != null) {
        println "Adding post-compile hook to ${variant.name}"
        javaTask.finalizedBy "${variant.name.capitalize()}DatabaseCompile"
    }

}

并放在build.gradle的android部分

我尝试在任务的依赖项部分添加其他语句,但无济于事。

compile 'com.j256.ormlite:ormlite-android:4.48'

(在任务执行期间抛出ClassNotFoundException)

classpath 'com.j256.ormlite:ormlite-android:4.48'

classpath files('com.j256.ormlite:ormlite-android:4.48')

(无法将网址'com.j256.ormlite:ormlite-android:4.48'转换为文件。)

我无法看到如何让JavaExec任务使用远程仓库来查找所需的类。

compile 'com.j256.ormlite:ormlite-android:4.48'

用于主项目依赖项并且工作正常。

2 个答案:

答案 0 :(得分:1)

可能会在这里误解你一点,但可能是因为你使用了依赖关系错了吗?可能这是合适的

dependencies {
    orm 'com.j256.ormlite:ormlite-android:4.48'
}
...
task "${databaseTaskName}" (type: JavaExec) {
    main = 'com.barclaycard.bespoke.android.data.local.DatabaseConfigUtil'

    classpath configurations.orm + files("${buildDir}/intermediates/classes/${variant.dirName}")

...
}

不确定是否' +'工作中。 configurations.orm 我认为应该会产生影响。

答案 1 :(得分:1)

在我的情况下,它与环境变量设置错误有关: export LOCAL_LIB = D:\ LIB VS export LOCAL_LIB =" D:\ LIB"

所以,报价是问题所在。