在eclipse中获取图像,但不能在.jar

时间:2016-12-21 00:38:11

标签: java image file javafx path

我在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中工作?

3 个答案:

答案 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

这可能是由两件事引起的:

  1. 文件不会导出到jar文件中。您可以通过转到Project-Properties-> Java Build Path-> Source来解决此问题,并检查是否包含所有文件,并且不排除任何特定文件。
  2. 第二种可能性是错误的道路。在某种程度上,日食路径的解决方式不同。对此的解决方案是通过类定义路径。 我们假设你有以下文件夹结构:
    Folder structure
    然后,如果您将其用作路径,则可以安全地访问图像:

    Prog.class.getResource(" IMG / foo.jpg&#34);