Javafx:jpeg文件存在,但Image构造函数抛出IllegalArgumentException!为什么?

时间:2015-03-11 19:40:10

标签: java image javafx

为什么以下代码会抛出此异常?

java.lang.IllegalArgumentException: Invalid URL or resource not found

以下是代码:

File ff=new File("images/a.jpg");
if (ff.exists()) {Image ii=new Image(ff.getPath());}

1 个答案:

答案 0 :(得分:1)

来自Javadocs

  

URL支持的所有URL都可以传递给构造函数。如果   传递的字符串不是有效的URL,而是一个路径,而不是Image   在那种情况下在类路径上搜索。

您获得的路径是相对路径,但不是(必然)相对于类路径,这是Image构造函数解释它的方式。

尝试

Image ii=new Image(ff.toURI().toURL().toExternalForm());

或者,取决于您如何设置项目结构

Image ii=new Image(getClass().getResource("images/a.jpg").toExternalForm());

如果图像文件与应用程序一起打包在jar文件中,则第二个版本将起作用。