【发布时间】:2016-04-30 13:21:12
【问题描述】:
我正在创建一个使用 gson 的 gradle 插件,但是当我在客户端使用该插件时,它会抛出这个 java.lang.NoClassDefFoundError: com/google/gson/Gson
我希望我以错误的方式链接插件中的依赖项,但我不太确定,所以任何帮助都会很棒。
插件中的build.gradle
group 'nl.daanluttik.gradle'
version '0.1'
apply plugin: 'java'
apply plugin: 'maven' // the plugin to distribute to maven
sourceCompatibility = 1.8
repositories {
mavenCentral()
}
dependencies {
compile group: 'com.google.code.gson', name: 'gson', version: '1.7.2'
compile gradleApi()/*The gradle plugin api*/
testCompile group: 'junit', name: 'junit', version: '4.11'
}
//To distribute to maven
uploadArchives {
repositories {
mavenLocal()
}
}
客户端项目中buildgradle的一段
buildscript {
repositories {
mavenLocal()
}
dependencies {
classpath group: 'nl.daanluttik.gradle', name: 'peach', version: '0.1'
}
}
【问题讨论】:
-
这真的是第一个错误吗?我经常看到
NoClassDefFoundError(与ClassNotFoundException形成对比),如果某些静态初始化程序引发了一些异常,并且由于该类无法加载并且以后不可用。 -
@BjörnKautler 你是完全正确的。我会改的
-
太好了,我把评论作为答案,所以你可以采取相应的行动:-)
-
你能看看你的插件发布到你的mavenLocal的pom.xml吗?它是否包含 gson 依赖项?
-
您是否尝试将 mavenCentral() 添加到客户端项目的 buildscript 部分?