请原谅我对Java Webstart的有限理解,因为我对此非常陌生。
所以我的应用程序在我的计算机上的JAR文件中运行,在静态方法中使用此代码段(类扩展了JFrame):
ImageIcon image = new javax.swing.ImageIcon(window.getClass().getResource("/resources/img/loginWindowTop.jpg"));
//ImageIcon image = new ImageIcon(window.getClass().getResource("/resources/img/loginWindowTop.jpg")); // tried this too
JLabel imageLabel = new JLabel(image);
imageLabel.setBounds(rect);
window.add(imageLabel);
直接从JAR文件在我的计算机上启动应用程序时,它可以正常工作。当使用JNLP文件从Web服务器进行测试时,应用程序崩溃显示:
java.lang.NullPointerException
at javax.swing.ImageIcon.<init>(Unknown Source)
at gui.LoginWindow.create(LoginWindow.java:42)
at main.Starter.main(Starter.java:13)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at com.sun.javaws.Launcher.executeApplication(Unknown Source)
at com.sun.javaws.Launcher.executeMainClass(Unknown Source)
at com.sun.javaws.Launcher.doLaunchApp(Unknown Source)
at com.sun.javaws.Launcher.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
如果有人能解释该怎么做,我真的很感激。我在互联网上搜索了很长时间,没有任何解决方案可以帮助我(还)。我希望不是因为我正在使用静态JFrame(在我的代码片段中称为窗口)?
答案 0 :(得分:1)
使用WinZip或7Zip打开jar,查看路径是否确实/resources/img/loginWindowTop.jpg
,区分大小写。 (特别是文件名应该在camel的情况下在文件系统上。)类加载器有点深奥的错误,那么你可以尝试而不是window.getClass...
getClass...
。
答案 1 :(得分:0)
感谢你的提示,我终于找到了办法。由于我的类LoginWindow仅以静态方式使用,我必须使用
ImageIcon image = new ImageIcon(LoginWindow.class.getResource("/resources/img/loginWindowTop.jpg"));
LoginWindow.getClass()只能以非静态方式工作。
感谢大家的投入,我希望这对其他人也有帮助!