冲突我有一个使用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'中通过调试选项 –