【发布时间】:2022-10-02 00:56:04
【问题描述】:
我正在尝试从 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\'
)
}
}
-
在尝试使用 docker 之前,您是否运行过这个应用程序?
-
@YJR 是的,使用 IntelliJ。
-
如果您构建项目并直接尝试使用
java -jar <jar_name>运行 jar,会发生什么情况? -
@akortex 我得到一个不同的错误:java.lang.UnsupportedClassVersionError