2014-10-08 34 views
1

我正在嘗試在我的android gradle腳本中集成ORMLite數據「編譯器」實用程序的運行。我已經建立了如何使用所需的依賴關係將其放置在構建流程中,以確保它在java編譯後運行,並且第二個任務將使用aapt更新帶有生成的數據庫定義文件的apk。Gradle JavaExec任務失敗,在Android Studio中找不到庫類錯誤

我的主要問題是,我不能讓我的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部分內

我已經嘗試在任務b的依賴項部分添加額外的語句無濟於事。

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') 

(不能轉換URL 'com.j256.ormlite:ormlite-安卓:4.48' 到一個文件中。 )

我看不到如何讓JavaExec任務使用遠程回購找到所需的類。

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

用於主項目依賴關係,並正常工作。

回答

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

感謝指針 - 這種方法奏效。就'+'而言,我只使用了兩個'classpath'語句。它們是累積的,每個'classpath'語句附加到類路徑。 – drew 2014-10-29 11:07:59

1

在我的情況下,它涉及到設置不正確的環境變量: 出口LOCAL_LIB = d:\ LIB VS 出口LOCAL_LIB = 「d:\ LIB」

左右,報價是問題。

相關問題