我用Maven构建了一个简单的Java后端。当我用mvn clean install
创建.jar文件时,我可以运行它,一切都很好。
然而,当我将其部署到Docker时,服务器会运行,但当我进行GET调用时,后端不会看到位于src/main/resousces/
中的静态.png文件。
java.io.FileNotFoundException: /src/main/resources/logo.png (No such file or directory)
图像与.gitlab-ci.yml
文件一起上传到docker:
services:
- docker:dind
before_script:
- docker info
maven-build:
stage: build
tags:
- maven3-jdk11
except:
- tags
script:
- mvn deploy -B -U
maven-release:
stage: deploy
tags:
- maven3-jdk11
only:
- tags
script:
- mvn deploy -B -Prelease-profile -Dmaven.javadoc.failOnError=false
(这是我第一次使用Maven和Docker,所以如果我提供的信息不够,请留下评论。(
好吧,我用java ClassLoader解决了它。
最初,我加载了这样的.png文件:
Image logo = new Image(ImageDataFactory.create("src/main/resources/logo.png"));
我把它改成了下面的,现在它就像魅力一样:
ClassLoader classLoader = getClass().getClassLoader();
Image logo = new Image(ImageDataFactory.create(classLoader.getResource("logo.png")));
我接受了尤金的回答以提高他的声誉,他让我朝着正确的方向前进。
打开你的jar文件并检查其中是否有.png文件。如果没有,你需要用resources文件夹打包一个jar。如果是,那么您需要使用类路径指定文件的路径。