为了账号安全,请及时绑定邮箱和手机立即绑定

用罐子打开时图像不可见。升级 javaFx 后创建新镜像需要完整目录

用罐子打开时图像不可见。升级 javaFx 后创建新镜像需要完整目录

白猪掌柜的 2022-06-04 09:28:01
将 IntelliJ java 和 javaFx 升级到 11 和 gradle 到 5.1.1 之后。创建新图像时,我需要像这样声明完整目录:new Image("file:src/main/java/sample/image.png");以前我可以简单地做:new Image("image.png")任何想法为什么项目没有正确识别我的包对于 new Image("image.png") 它给了我这个错误,但在更新之前它工作正常:java.lang.IllegalArgumentException: Invalid URL or resource not found我想要完成的是在执行 jar 时使图像和 fxml 可见。我正在创建一个 jar 文件,当我为 fxml 或图像指定这样的路径时:FXMLLoader loader = new FXMLLoader();loader.setLocation(new URL("file:src/main/java/sample/login.fxml"));Pane root = loader.load(); 当我运行 jar 时,我得到:Caused by: java.io.FileNotFoundException: src\main\java\sample\login.fxml (The system cannot find the path specified)我怎样才能做到这一点,以便当我将它打包为 jar 时它可以找到文件,以及为什么在更新之前我可以简单地写: new Image("image.png") 现在我需要写: new Image("文件:src/main/java/sample/image.png”)?任何帮助将不胜感激!
查看完整描述

1 回答

?
至尊宝的传说

TA贡献1789条经验 获得超10个赞

配置资源文件夹,然后在其中添加图像。在构建 jar 之后,如果您检查里面的文件(您可以通过将其转换为 zip 来做到这一点)并且图像不存在,您应该首先包含它们。为此,您可以在构建工件时包含目录内容并添加资源文件夹:

//img1.sycdn.imooc.com//629ab5410001292319081066.jpg

现在您可以将图像添加为资源:

Image image = new Image(getClass().getResourceAsStream("/image.png"));

此外,当您在模块中打开项目结构时,资源文件夹应配置为资源文件夹:

//img1.sycdn.imooc.com//629ab54e0001cdfe19061074.jpg

查看完整回答
反对 回复 2022-06-04
  • 1 回答
  • 0 关注
  • 63 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信