衝突我有一個使用Guava
作爲依賴一個簡單的構建腳本(短爲清楚起見)新搖籃版本創建了depedency
group 'test'
version '0.1.0'
apply plugin: 'java'
apply plugin: 'application'
sourceCompatibility = 1.8
targetCompatibility = 1.8
mainClassName = 'Test'
repositories {mavenCentral()}
task wrapper(type: Wrapper) {gradleVersion = '3.5'}
dependencies {compile 'com.google.guava:guava:21.0'}
運行此代碼:
public class Test {
public static void main(String[] args) {
LoadingCache<Long, String> applicantCache = CacheBuilder.newBuilder()
.maximumSize(30000)
.expireAfterAccess(31, TimeUnit.DAYS)
.build(new CacheLoader<Long, String>() {
@Override
public String load(Long key) {
return "";
}
});
}
}
我得到這個錯誤:
java.lang.NoClassDefFoundError: com/google/common/cache/CacheLoader
at java.lang.Class.getDeclaredMethods0(Native Method)
at java.lang.Class.privateGetDeclaredMethods(Class.java:2701)
at java.lang.Class.privateGetMethodRecursive(Class.java:3048)
at java.lang.Class.getMethod0(Class.java:3018)
at java.lang.Class.getMethod(Class.java:1784)
at sun.launcher.LauncherHelper.validateMainClass(LauncherHelper.java:544)
at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:526)
Caused by: java.lang.ClassNotFoundException: com.google.common.cache.CacheLoader
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:335)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
... 7 more
Error: A JNI error has occurred, please check your installation and try again
Exception in thread "main"
當降級Gradle Wrapper
版本3.3
問題已修復,但是,我需要版本3.5
,因爲版本3.3
中的其他內容不可行。據我所知,這個版本的Gradle
和Guava
之間有一些依賴衝突,但根據this後 - 這是不可能的。
我知道jar
到位+使用gradle dependencyInsight --dependency com.google.guava
表明存在依賴:
:dependencyInsight
com.google.guava:guava:21.0
\--- compile
感謝所有幫助
編輯: 在其他計算機上的測試之後,它似乎只問題在更新wrapper
任務時發生,執行它,然後通過單擊刷新gradle
項目刷新所有Gradle項目 bu噸(見附圖)。運行正在執行的分發腳本時,每件事情都可以正常工作 - 所以它只發生在Intellij
。我猜我錯過了如何Gradle Wrapper
工程或何時執行它的東西...
編輯 測試在搖籃3.4版和問題occurres。
你如何運行你的代碼?我無法用'./gradlew run'重現你的問題。 –
你嘗試過創建一個'胖罐子'嗎? https://www.mkyong.com/gradle/gradle-create-a-jar-file-with-dependencies/ –
@JBNizet我在'Intellij'中通過調試選項 –