Jar依赖中的Gradle NoClassDefFoundError

赫克托

我已经开发了一个自定义的Gradle插件,并组装为jar该插件具有一个依赖项:

plugin / build.gradle

dependencies {
    compile 'com.jcraft:jsch:0.1.53'
}

我已经包括了我的另一个消费项目(如插件jarlibs):

消费者/ build.gradle

apply plugin: 'gg-release-plugin'

buildscript {
    repositories {
        flatDir {
            dirs 'libs'
        }
        mavenCentral()
    }
    dependencies {
        classpath 'com.myplugin.plugin:myplugin:1.0'
    }
}

一切正常,但是com.jcraft:jsch:0.1.53执行使用依赖项类的代码时,出现错误:

java.lang.NoClassDefFoundError:com / jcraft / jsch / JSch

我究竟做错了什么?如何在jar文件中包含依赖项

斯坦尼斯拉夫

看来,您已经创建了一个具有编译时要求的插件jar库,该库未包含在最终jar中的任何位置。

您可以尝试使用Gradle FatJar插件或其他方式将您的插件jar创建为胖子在这种情况下,您将只有一个jar,其中包含所有依赖类。但是,如果有人使用相同的库,则可能会导致问题。

或者,您可以尝试与插件jar一起提供JSch库,并建立消费者构建脚本依赖项,例如:

buildscript {
    repositories {
        flatDir {
            dirs 'libs'
        }
        mavenCentral()
    }
    dependencies {
        classpath 'com.myplugin.plugin:myplugin:1.0'
        classpath 'com.jcraft:jsch:0.1.53'
    }
}

据我所知,如果您使用Maven存储库发布插件,则可以提供pom.xml来描述所有插件的依赖项,但是正如我所看到的,您正在为其使用flatDir,因此,似乎不可能。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章