在Jar文件中找不到JavaFx图像

时间:2016-07-18 19:47:39

标签: java image javafx

我试图生成一个带有JavaFx gui的项目的可运行jar文件。 该项目在eclipse中运行greate但是当我尝试运行jar时:

Exception in thread "main" java.lang.reflect.InvocationTargetException
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
   ...Caused by: java.lang.NullPointerException: Input stream must not be null

图像代码如下:

private Image image1 = new Image(this.getClass().getResourceAsStream("../pic/classic/image1.png"));

我需要更改什么,以便我可以毫无例外地运行我的jar文件。

感谢您的帮助。

2 个答案:

答案 0 :(得分:5)

{jar}在jar文件中指定资源名称时无效..。根据{{​​3}}资源路径的每个组件应该是有效的Java标识符:..不是。

要解决此问题,只需指定相对于类路径的绝对资源名称。因此,如果您所在的课程位于名为com.mycompany.myapplication.view的课程中,您可以使用

private Image image1 = 
    new Image(this.getClass().getResourceAsStream("/com/mycompany/myapplication/pic/classic/image1.png"));

答案 1 :(得分:0)

请记住,映像文件名在jar中是区分大小写的,而不在IDE中(例如Eclipse)。

因此,如果您有"/resource/image.jpg"参数和IMAGE.jpg文件名,则应用程序将在Eclipse中运行,并且被导出到jar中,将在

中生成NullPointerException
Image image1 = new Image(getClass().getResourceAsStream("/resource/image.jpg"));