我正在嘗試從 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'
)
}
}
uj5u.com熱心網友回復:
經過數小時的谷歌搜索,我更新了我的 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。這對我行得通。希望這可以幫助某人:)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/511771.html
標籤:爪哇码头工人毕业典礼
