首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用maven构建的Docker映像看不到静态文件

使用maven构建的Docker映像看不到静态文件
EN

Stack Overflow用户
提问于 2020-05-12 12:34:40
回答 2查看 401关注 0票数 0

我使用Maven构建了一个简单的Java后端。当我用.jar创建mvn clean install文件时,我可以运行它,一切都很好。

但是,当我将它部署到Docker时,服务器会运行,但是当我进行GET调用时,后端不会看到位于src/main/resousces/中的静态src/main/resousces/文件。

代码语言:javascript
复制
java.io.FileNotFoundException: /src/main/resources/logo.png (No such file or directory)

该图像被上传到带有此.gitlab-ci.yml文件的停靠点:

代码语言:javascript
复制
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合作,所以如果我提供的信息不够,请留下评论。)

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-05-12 12:45:27

解压jar文件并检查其中是否有.png文件。如果不是,您需要用资源文件夹打包一个jar。如果是,则需要使用类路径指定文件路径。

票数 1
EN

Stack Overflow用户

发布于 2020-05-14 09:23:42

好吧,我用java ClassLoader解决了这个问题。

最初,我按如下方式加载了.png文件:

代码语言:javascript
复制
Image logo = new Image(ImageDataFactory.create("src/main/resources/logo.png"));

我把它变成了跟随,现在它就像魅力一样:

代码语言:javascript
复制
ClassLoader classLoader = getClass().getClassLoader();
Image logo = new Image(ImageDataFactory.create(classLoader.getResource("logo.png")));

为了提高尤金的声誉,我接受了尤金的回答,他把我推向了正确的方向。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61751872

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档