gpt4 book ai didi

JavaFx 图像路径

转载 作者:行者123 更新时间:2023-12-01 16:55:35 25 4
gpt4 key购买 nike

我的 Java 类有问题。实际上代码是正确的,但是如果我单击运行按钮,则会出现图像路径引起的异常。

static Image currentBackground = new Image("Snake/Images/background_options.png", true);

编译器的消息是:

Exception in thread "main" java.lang.ExceptionInInitializerError
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:264)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:122)
Caused by: java.lang.IllegalArgumentException: Invalid URL: Invalid URL or resource not found
at javafx.scene.image.Image.validateUrl(Image.java:1100)
at javafx.scene.image.Image.<init>(Image.java:624)
at view.OptionsWindow.<clinit>(OptionsWindow.java:21)
... 3 more
Caused by: java.lang.IllegalArgumentException: Invalid URL or resource not found
at javafx.scene.image.Image.validateUrl(Image.java:1092)
... 5 more

进程已完成,退出代码为 1

有人可以帮我吗?

最佳答案

Image constructor需要指定URL,而不是文件系统路径。假设您将此图像捆绑为应用程序的一部分,则需要从加载类的同一位置加载该图像:可能是最终部署中的 jar 文件,但也可能是开发期间从文件系统中加载的。

获取代表应用程序一部分资源的 URL 的机制是在 Class 上调用 getResource()ClassLoader .

执行此操作的确切方法取决于您的项目结构,您尚未显示该结构,但例如:

new Image(getClass().getResource("Snake/Images/background_options.png").toString(), true);

将从相对于当前类指定的资源加载图像,并且

new Image(getClass().getClassLoader().getResource("Snake/Images/background_options.png").toString(), true);

将从相对于类路径指定的资源加载图像。

如果您传递一个代表相对 URL 的 String(即没有方案的 URL,例如 file:http: ,或 jar:),然后 Image 构造函数将在类路径中搜索资源。换句话说

new Image("Snake/Images/background_options.png", true);

相当于

new Image(getClass().getClassLoader().getResource("Snake/Images/background_options.png").toString(), true);

这似乎有点违反直觉(至少对我来说),因此我更喜欢始终完全指定 URL,或者从 getClass().getResource() 检索 URL File.toURI().toURL()(视情况而定)。

关于JavaFx 图像路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33305037/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com