我對下面的spring boot應用程式有一個問題,我需要包含一個spring boot應用程式在mac上本地運行,為了做到這一點,我寫了下面的dockerfile,容器影像正確生成,但當我把它放在運行時,我有下面的錯誤,它是什么原因,這可能是什么? 我使用下面的shell檔案來做這些事情,我怎樣才能解決這個錯誤呢?
錯誤:
Exception in thread "main" java.lang. UnsupportedClassVersionError: com/reportserver/report/ReportApplication已被較新版本的Java Runtime編譯(類檔案版本為55.0),該版本的Java Runtime只識別52.0以下的類檔案版本
at java.lang.ClassLoader.defineClass1(Native Method)
docker.sh:
#!/bin/bash
#define docker name
dockername=quote
#Delete all containers and all volumes
docker system prune -a
#Build of container and image[/span].
docker build -t $dockername 。
#運行容器。
docker run --publish 8081:8081 $dockername 。
Dockerfile:
FROM openjdk:alpine
EXPOSE 8081
ARG JAR_FILE=target/report-0.0.1-SNAPSHOT.jar
ADD ${JAR_FILE} app.jar
ENTRYPOINT ["java","-jar","/app.jar"]
uj5u.com熱心網友回復:
你在你的docker基礎鏡像中使用了舊的jvm版本 openjdk:alpine java 8我猜,你至少需要使用java 11。
使用這個標簽openjdk:11.0.12-jre來代替或者搜索等價的alpine版本。
這里有一個java版本及其類的版本號串列 Java類檔案格式主要版本號串列?
uj5u.com熱心網友回復:
看起來你正在使用java 11來構建你系統中的jar檔案。
在你的docker檔案中,它正在使用java 8來運行jar。
相反,請對你的Docker檔案這樣做。
FROM openjdk:11-slim
EXPOSE 8081
ARG JAR_FILE=target/report-0.0.1-SNAPSHOT.jar
ADD ${JAR_FILE} app.jar
ENTRYPOINT ["java","-jar","/app.jar"]
從官方的github檔案來看,openjdk仍然不完全支持alpine作為基礎作業系統。"-slim"版本將使用Debian代替。
Alpine 的 OpenJDK 埠不在 OpenJDK 的支持版本中,因為它不在主線代碼庫中。它只能作為 OpenJDK Project Portola 的早期訪問構建來使用。也請看這個評論。所以這個圖片是按照OpenJDK專案維護者提供的內容制作的。
你可以在下面的鏈接中查看標簽串列和它們的詳細資訊。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/327313.html
標籤:
