当我没有尝试将它用作网络启动应用程序时,我有一个运行良好的应用程序,但是当我将其转换为Netbeans中的应用程序时,它会变得很糟糕。尝试获取位于依赖库中的资源时,控制台显示空指针异常。代码行本身会抓取该库文件中的.png文件,并将其用于窗口图标。杀死它的代码行是:
java.net.URL url = ClassLoader.getSystemResource("/com/my/icon/someimage.png");
Toolkit kit = Toolkit.getDefaultToolkit();
Image img = kit.createImage(url); // fails with null pointer exception
如果我不想尝试将其作为网络启动应用程序,那么我就没有问题。它完美运行。 Web start = failboat。代码已签名,如果这有任何区别。正在使用的库文件是一个大的jar,其中包含我创建的3个库文件以及我需要编写的其他4个库文件。我是否也需要签署库文件?这本身可能是一个问题吗?
编辑:
如果我删除了这些代码行,那么Web应用程序就可以运行而没有任何问题。
这是错误:
Exception in thread "AWT-EventQueue-2" java.lang.NullPointerException
at sun.net.util.URLUtil.getConnectPermission(Unknown Source)
at sun.awt.SunToolkit.checkPermissions(Unknown Source)
at sun.awt.SunToolkit.createImage(Unknown Source)
at DDSC.initComponents(DDSC.java:265)
at DDSC.<init>(DDSC.java:103)
答案 0 :(得分:1)
尝试仅使用文件名使用getClassLoader()。getResource() 不需要完整路径,getClassLoader()通过WebStart&amp;处理魔术。也在当地:
String filename = "someimage.png";
Image resultImg = null;
URL url = getClassLoader().getResource(filename);
if (url != null)
resultImg = Toolkit.getDefaultToolkit().getImage(url);