【发布时间】:2019-01-20 06:10:45
【问题描述】:
我的 Java 应用程序在 Java 8 上运行良好,但现在 Java 10 由于这条线而失败
setIconImage(Toolkit.getDefaultToolkit().createImage(Icon.class.getResource("/icon/songkong20.png")));
引用的图像存在并在使用 Java 8 时显示。
这会导致这个异常
java.lang.NullPointerException
at java.desktop/sun.awt.image.URLImageSource.getConnection(URLImageSource.java:101)
at java.desktop/sun.awt.image.URLImageSource.getDecoder(URLImageSource.java:111)
at java.desktop/sun.awt.image.InputStreamImageSource.doFetch(InputStreamImageSource.java:263)
at java.desktop/sun.awt.image.ImageFetcher.fetchloop(ImageFetcher.java:212)
at java.desktop/sun.awt.image.ImageFetcher.run(ImageFetcher.java:176)
【问题讨论】:
-
这是您看到的完整堆栈跟踪吗?任何相关的代码行?您是如何开始申请的?
-
@nullpointer 是完整的堆栈跟踪,但我现在找到了有问题的行,它有什么问题。
-
啊,隐约记得一件事,如果我将 Icon.class 替换为我自己的类之一 SongKong.class 就可以了
-
Class.getResource已在 Java9 中进行了修订,here you can read 更多关于模块的类加载器的影响以及如何找到资源。最好在Class.getResource方法中设置一个调试点,并在您的两个用例(Icon.class与SongKong.class)中降级,您将能够自己查看不同的分辨率。
标签: java class resources classloader java-10