Java Docker形象构建与maven不';看不到静态文件

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

我用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.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
文件夹中。您可以指定使用类路径的含义吗?您可以在这里看到-您如何在代码中引用文件?请参阅我的答案。您如何在代码中引用文件?请参阅我的答案。