簡體   English   中英

嘗試運行 gradle build 時出現 java.lang.NoClassDefFoundError

[英]java.lang.NoClassDefFoundError when trying to run gradle build

我正在嘗試從 Dockerfile 運行 java 應用程序。Dockerfile 如下所示:

FROM gradle:7.2-jdk17-alpine AS build

COPY --chown=gradle:gradle . /home/gradle/src
WORKDIR /home/gradle/src
RUN gradle build --no-daemon

FROM openjdk:17

EXPOSE 7070

RUN mkdir /app
COPY --from=build /home/gradle/src/build/libs/*.jar /app/app.jar

ENTRYPOINT ["java", "-jar", "/app/app.jar"]

容器構建圖像,但當我嘗試運行容器時,出現錯誤:

Exception in thread "main" java.lang.NoClassDefFoundError: com/mongodb/client/MongoClients

我的build.gradle有問題嗎?

plugins {
    id 'java'
}

repositories {
    mavenCentral()
}

dependencies {
    implementation 'io.javalin:javalin:4.6.4'
    implementation 'org.slf4j:slf4j-simple:1.8.0-beta4'
    implementation 'com.fasterxml.jackson.core:jackson-databind:2.13.3'
    implementation 'org.mongodb:mongodb-driver-sync:4.7.1'
    implementation 'io.jsonwebtoken:jjwt-api:0.11.5'
    implementation 'io.jsonwebtoken:jjwt-impl:0.11.5'
    implementation 'io.jsonwebtoken:jjwt-jackson:0.11.5'
    implementation 'com.fasterxml.jackson.datatype:jackson-datatype-jsr310:2.13.3'
    implementation 'org.apache.poi:poi:5.2.2'
    implementation 'org.apache.poi:poi-ooxml:5.2.2'
    testImplementation 'org.junit.jupiter:junit-jupiter-api:5.9.0'
    testImplementation 'org.mockito:mockito-core:4.7.0'
    testImplementation 'com.tngtech.archunit:archunit-junit5:0.23.1'
    testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.9.0'
}

test {
    useJUnitPlatform()
}

jar {
    manifest {
        attributes(
                'Main-Class': 'packagename.Application'
        )
    }
}

經過幾個小時的谷歌搜索,我更新了我的 build.gradle:

plugins {
    id 'java'
    id 'com.github.johnrengelman.shadow' version '7.1.2'
}

repositories {
    mavenCentral()
}

dependencies {
    implementation 'io.javalin:javalin:4.6.4'
    implementation 'org.slf4j:slf4j-simple:1.8.0-beta4'
    implementation 'com.fasterxml.jackson.core:jackson-databind:2.13.3'
    implementation 'org.mongodb:mongodb-driver-sync:4.7.1'
    implementation 'io.jsonwebtoken:jjwt-api:0.11.5'
    implementation 'io.jsonwebtoken:jjwt-impl:0.11.5'
    implementation 'io.jsonwebtoken:jjwt-jackson:0.11.5'
    implementation 'com.fasterxml.jackson.datatype:jackson-datatype-jsr310:2.13.3'
    implementation 'org.apache.poi:poi:5.2.2'
    implementation 'org.apache.poi:poi-ooxml:5.2.2'
    testImplementation 'org.junit.jupiter:junit-jupiter-api:5.9.0'
    testImplementation 'org.mockito:mockito-core:4.7.0'
    testImplementation 'com.tngtech.archunit:archunit-junit5:0.23.1'
    testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.9.0'
}

test {
    useJUnitPlatform()
}

jar {
    manifest {
        attributes(
                'Main-Class': 'packagename.Application',
                'Class-Path': '/libs/*.jar'
        )
    }
}

並構建 jar 我知道使用./gradlew --no-daemon shadowJar。 這對我行得通。 希望這對某人有幫助:)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM