java图像无法正确加载Windows 10

时间:2016-05-06 12:28:09

标签: java image javafx

这就是我尝试加载图片的方式

String imagePath = "/hive/pions/images/pionimages/" + pionColor + "/" + pionType + ".png";

pionImageView.setImage(new Image(getClass().getResourceAsStream(imagePath)));

enter image description here

我的包结构看起来像这样,这不是问题吧?并且“/”应该在linux中作为windows工作吗? 事情是它在Linux和Mac上工作,但不在Windows上。

JAR文件内容:

enter image description here

2 个答案:

答案 0 :(得分:1)

不要使用Path类。并且不要使用File类。

Class.getResource和Class.getResourceAsStream的参数不是文件名;它是一个相对的URL。 URL 始终在所有平台上使用正斜杠(/)作为文件分隔符。

执行Path.toString()时,您将获得适合您正在运行的平台的文件名。这意味着在Windows上,目录将由\分隔。结果是一个String,它不是Class.getResourceAsStream的有效参数。

完全跳过使用Path:

String imagePath = "images/pions/" + pionColor + "/" + pionType + ".png";

答案 1 :(得分:1)

您需要使用/启动路径,使其相对于JAR根目录;否则它将与班级名称相关。

getClass().getResourceAsStream("image/foo")将映射到com/example/packagename/image/foo

getClass().getResourceAsStream("/image/foo"将映射到image/foo