![](/img/trans.png)
[英]Cannot convert relative path ~/.gradle/daemon/6.4.1 to an absolute file
[英]Gradle absolute / relative path
我有以下問題。 當我想在我的Gradle依賴項中使用本地jar時。
如果我只是添加:
compile files('libs/PushLinkAndroid-5.3.0.jar')
它不起作用。
C:\\ Users \\ Kai \\ AndroidStudioProjects \\ ProjectA \\ app \\ src \\ main \\ java \\ de \\ xyz \\ xxx \\ projecta \\ BaseActivity.java:21:error:package com.pushlink.android不存在import com.pushlink.android .PushLink;
注意:某些輸入文件使用或覆蓋已棄用的API。 注意:使用-Xlint重新編譯:棄用以獲取詳細信息。 4個錯誤
失敗
FAILURE:構建因異常而失敗。
出了什么問題:任務執行失敗':app:compileDebugJava'。
編譯失敗; 請參閱編譯器錯誤輸出以獲取詳細信
嘗試:使用--stacktrace選項運行以獲取堆棧跟蹤。 使用--info或> - debug選項運行以獲取更多日志輸出。
建築失敗
總時間:6.543秒
如果我添加Jar的絕對路徑,項目編譯,一切正常:
compile files('C:/Users/Kai/AndroidStudioProjects/ProjectA/libs/PushLinkAndroid-5.3.0.jar')
看起來路徑有問題但是當絕對路徑工作正常時怎么可能呢?
編輯: Build.gradle
apply plugin: 'com.android.application'
android {
compileSdkVersion 22
buildToolsVersion "22.0.1"
defaultConfig {
applicationId "de.xyz.kai.migraenebook"
minSdkVersion 16
targetSdkVersion 22
versionCode 1
versionName "1.0"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
//compile fileTree(include: ['*.jar'], dir: 'libs')
compile 'com.android.support:appcompat-v7:22.2.0'
compile 'com.jakewharton:butterknife:7.0.1'
compile project(':volley')
debugCompile 'im.dino:dbinspector:3.2.1@aar'
compile 'de.hdodenhof:circleimageview:1.3.0'
compile 'com.android.support:recyclerview-v7:+'
//compile files('C:/Users/Kai/AndroidStudioProjects/MigraeneBook/libs/PushLinkAndroid-5.3.0.jar')
compile files('libs/PushLinkAndroid-5.3.0.jar')
//compile files('libraries/PushLinkAndroid-5.3.0.jar')
//compile files('C:/Users/Kai/AndroidStudioProjects/MigraeneBook/libraries/PushLinkAndroid-5.3.0.jar')
}
注意:我嘗試了不同的文件夾,PushLink.jar位於“libs”和“libraries”中。 它使用哪個命令或注釋掉並沒有什么區別 - 絕對路徑是有效的,相對不是。
試試這個,它將包括本地存儲庫中的所有JAR,因此您不必每次都指定它:
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
}
此外,您應該知道通過引用文件時
files("relative/path/to/a.jar")
path是相對於此片段所在的buildscript進行評估的。所以當你的build.gradle
文件位於/a/project/build.gradle
,jar應該在/a/project/relative/path/to/a.jar
。 在多項目gradle構建中,您可以將jar放在相對於根項目的文件夾中,並通過所有子項目引用它
rootProject.files("relative/to/root/a.jar")
因此,請考慮此問題並重新檢查您的gradle設置是否正確。
在我看來,首先添加手動庫 - 如果可以避免 - 是不好的做法,因為你需要自己維護lib和路徑。
我快速瀏覽了maven repo,似乎他們沒有這個特定的lib。 這是我所期望的:
compile('com.anypackage.name.PushLinkAndroid-5.3.0.jar')
由於這可能不是你自己而不是https://www.pushlink.com/changelog.xhtml的開發團隊,因此無法提供幫助。
現在問題:你是否用--stacktrace開始構建?
從我可以從中收集到的
compile files('C:/Users/Kai/AndroidStudioProjects/ProjectA/libs/PushLinkAndroid-5.3.0.jar')
你正在使用Windows系統。 這在某些方面很麻煩,因為Gradle期望路徑看起來像這樣:
C:/Users/Kai/AndroidStudioProjects/ProjectA/libs/PushLinkAndroid-5.3.0.jar
我瘋狂的猜測是,當你沒有自己指定路徑時,gradle會做這樣的事情:
C:\Users\Kai\AndroidStudioProjects\ProjectA\libs/PushLinkAndroid-5.3.0.jar
您可以使用此gradle任務驗證行為:
task printBuildDir() {
def buildDir = "${buildDir}"
println buildDir
def fixedDir = buildDir.replaceAll('\\\\', '/')
println fixedDir
}
如果我的猜測是正確的,你有兩個選擇:
如果您調用URL方案路徑,則可以使用此示例:
def path = "file://${projectDir}/ojdbc6.jar"
你的libs文件夾放錯了地方。 你必須把它放在MigraeneBook/app
,而不是直接放在MigraeneBook
下。
指定每個JAR文件名也是一種可能性。
dependencies {
compile files('lib/dependency_one.jar', 'lib/dependency_two.jar')
}
這將告訴Gradle在編譯期間包含dependency_one.jar和dependency_two.jar。 要確認編譯配置中包含所有必需的JAR,您可以創建此幫助程序任務,
task listJars << {
configurations.compile.each { File file -> println file.name }
}
然后運行它,
$ gradle -q listJars
hibernate-core-3.6.7.Final.jar
antlr-2.7.6.jar
commons-collections-3.1.jar
dom4j-1.6.1.jar
hibernate-commons-annotations-3.2.0.Final.jar
hibernate-jpa-2.0-api-1.0.1.Final.jar
jta-1.1.jar
slf4j-api-1.6.1.jar
欲了解更多信息, 請訪問https://docs.gradle.org/current/userguide/declaring_dependencies.html
老問題,但可能會幫助某人。 我有同樣的問題,我在項目根文件夾中有2個庫,並且它不適用於相對路徑。 如果您的庫位於項目的根文件夾中,請在相對路徑之前添加../。
implementation fileTree(dir: 'libs', include: ['*.jar'])
...
implementation files('../library_name/libs/some.jar')
我的問題是我從Android Studio IDE本身復制它,就像libs上的命令+ c從一個項目和命令+ v到另一個項目的libs。 出於某種原因,AS生成大小為零的jar文件......但是嘿,我學到了一些關於Gradle的新東西:)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.