Java Docker形象构建与maven不';看不到静态文件
我用Maven构建了一个简单的Java后端。当我使用Java Docker形象构建与maven不';看不到静态文件,java,docker,maven,gitlab-ci,Java,Docker,Maven,Gitlab Ci,我用Maven构建了一个简单的Java后端。当我使用mvn clean install创建.jar文件时,我可以运行它,一切正常 但是,当我将其部署到Docker时,服务器会运行,但当我进行GET调用时,后端不会看到位于src/main/resources/中的static.png文件 java.io.FileNotFoundException: /src/main/resources/logo.png (No such file or directory) 图像将与此.gitlab ci.y
mvn clean install
创建.jar文件时,我可以运行它,一切正常
但是,当我将其部署到Docker时,服务器会运行,但当我进行GET调用时,后端不会看到位于src/main/resources/
中的static.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合作,因此如果我提供的信息不充分,请留下评论。)解压缩jar文件并检查其中是否包含.png文件。如果没有,则需要将jar与resources文件夹打包。如果是,则需要使用classpath指定文件路径。解压缩jar文件并检查其中是否包含.png文件。如果没有,则需要将jar与resources文件夹打包。如果是,那么您需要使用classpath指定文件的路径。好的,我用java解决了这个问题 最初,我加载了.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")));
我接受了尤金的回答以提高他的声誉,他让我朝着正确的方向前进。好的,我设法用java解决了这个问题 最初,我加载了.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")));
我接受了尤金的回答以提高他的声誉,他让我朝着正确的方向前进。它在
BOOT-INF/classes
文件夹中。您可以指定使用类路径的含义吗?您可以在这里看到-它在BOOT-INF/classes
文件夹中。您可以指定使用类路径的含义吗?您可以在这里看到-您如何在代码中引用文件?请参阅我的答案。您如何在代码中引用文件?请参阅我的答案。