我正在尝试生成一个包含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文件。
谢谢您的帮助。
..
在指定jar文件中的资源名称时无效。根据documentation on resource naming,资源路径的每个组件都应该是一个有效的Java标识符:..
不是。
要解决此问题,只需指定相对于类路径的绝对资源名称。因此,如果您所在的类位于名为com.mycompany.myapplication.view
的包中,则可以使用
private Image image1 =
new Image(this.getClass().getResourceAsStream("/com/mycompany/myapplication/pic/classic/image1.png"));
请记住,图像文件名在jar中是CASE SENSITIVE,不在IDE中(例如Eclipse)。
因此,如果你有"/resource/image.jpg"
参数和IMAGE.jpg
文件名,应用程序将在Eclipse中工作,并导出到jar,将生成NullPointerException
in
Image image1 = new Image(getClass().getResourceAsStream("/resource/image.jpg"));