我在eclipse中制作应用程序。当我在日食中运行它时,它可以工作
这是图像的路径:C:\ Users \ example \ workspace \ example \ src \ images
这是我的代码:
public String name;
public Rectangle example;
public Image exampleImage;
public Example(String name) {
this.name = name;
exampleImage = new Image("./images/example.png");
example = new Rectangle(exampleImage.getWidth(), exampleImage.getHeight());
example.setFill(new ImagePattern(exampleImage));
}
我从另一个文件中访问此代码中的图像。
public Example example;
public void buildExample(){
example = new Example("example");
borderPane.getChildren().add(example.getImage());
}
所有.java都在src中
所有图像都在图像中
在eclipse中,这些目录起作用:
“./images/example.png”
“文件:./ SRC /图片/ example.png”
当它创建.jar文件时,路径是
Example.jar \影像\
所有.class文件都在Example.jar中
所有图像都在图像中
当我运行.jar时,我收到此错误:
线程“JavaFX Application Thread”中的异常java.lang.IllegalArgumentException:Image必须为非null
为什么它在eclipse中工作而不是在.jar中工作?
答案 0 :(得分:1)
要从jar打开文件,请使用以下方法:
URL url = this.getClass().getClassLoader().getResource(filePath);
并将url.toString()
作为Image
类
答案 1 :(得分:0)
这是因为Eclipse只编译您的代码,他们不会将图像附加到.jar。如果你想使用.jar文件,那么在你的.jar所在的文件夹中创建这些目录:“src / images /”然后将你的“example.png”图像放在该目录中。运行.jar,它应该加载到图像中。
答案 2 :(得分:0)
编辑: 您发布的代码甚至无法编译!请点击此链接获取如何阅读图片的教程:https://docs.oracle.com/javase/tutorial/2d/images/loadimage.html
这可能是由两件事引起的:
第二种可能性是错误的道路。在某种程度上,日食路径的解决方式不同。对此的解决方案是通过类定义路径。
我们假设你有以下文件夹结构:
Folder structure
然后,如果您将其用作路径,则可以安全地访问图像:
Prog.class.getResource(" IMG / foo.jpg&#34);