有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java Gradle不会在生成操作后导入添加的依赖项

我使用的是SpringBootVersion1.5.12和Gradle5.2.1

我已经在我的项目中添加了Sentry库,如以下文档所述:

implementation 'io.sentry:sentry:1.7.23'

Gradle在以下位置下载相关的JAR文件:\.gradle\caches\modules-2\files-2.1\io.sentry\sentry\1.7.23 我还可以在我的IDE的External Libraries部分看到它

然后我在本地环境中配置了它,一切正常,我可以在Sentry dashboard中看到我的异常报告

但是在那之后,当我想为我的生产环境创建一个版本的project时,构建操作成功地结束了,但是这个新库不在包含myPro的文件夹中(这是我名为Distribution的构建操作的结果)。jar和我使用的其他库,我遇到了一个例外:

Exception in thread "main" java.lang.NoClassDefFoundError: io/sentry/Sentry
        at ir.anarestan.ipc.boot.Boot.initSentry(Boot.java:22)
        at ir.anarestan.ipc.boot.Boot.main(Boot.java:17)
Caused by: java.lang.ClassNotFoundException: io.sentry.Sentry
        at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
        ... 2 more

这是我的build.gradle文件:

group 'pc-server'
version '0.2.1-SNAPSHOT'

apply plugin: 'java'
apply plugin: 'groovy'

sourceCompatibility = 1.8

repositories {
    mavenCentral()
}

dependencies {
    <some other dependecies>

    implementation 'io.sentry:sentry:1.7.23'

}

apply plugin: 'application'

mainClassName = 'ir.anarestan.ipc.boot.Boot'

jar {
    manifest {
        attributes 'Main-Class': mainClassName,
                'Class-Path': configurations.runtime.files.collect {"$it.name"}.join(' ')
    }
}


task fatJar(type: Jar) {
    manifest {
        attributes 'Implementation-Title': 'Gradle Jar File PC',
                'Implementation-Version': version,
                'Main-Class': 'ir.anarestan.ipc.boot.Boot'
    }
    baseName = project.name + '-all'
    from { configurations.compile.collect { it.isDirectory() ? it : zipTree(it) } }
    with jar
}
ext.distributionDir= "${rootDir}/dist/core"
ext.mainClassName = 'ir.anarestan.ipc.boot.Boot'
jar {
    manifest {
        attributes("Implementation-Title": project.name,
                "Implementation-Version": version,
                "Main-Class": mainClassName,
                "Class-Path": configurations.compile.collect { it.getName() }.join(' '))
    }
    destinationDir = file("$distributionDir")
}

task copyLibs(type: Copy){
    from configurations.compile
    into "$distributionDir"
}

task copyConfig(type: Copy){
    from "$projectDir/src/main/resources/"
    into "$distributionDir"
}

task distribution(dependsOn: ['copyLibs', 'copyConfig', 'jar']){
}

我在这里面临一个例外:

@SpringBootApplication
@EnableMongoRepositories(basePackages = {"ir.anarestan.ipc.repository.mongodb"})
public class Boot {

    public static void main(String[] args) {
        SpringApplication.run(Boot.class, args);
        Sentry.init();
    }
    }

任何帮助都将不胜感激,这花了我很多时间


共 (0) 个答案