以下是来自netbeans的自动生成代码:
loginButton.setIcon(new javax.swing.ImageIcon(getClass().getResource("/com/group8/view/images/loginbutton.png"))); // NOI18N
这是错误。
Exception in thread "main" java.lang.NullPointerException
at javax.swing.ImageIcon.<init>(ImageIcon.java:205)
at com.group8.view.Query.initComponents(Query.java:158)
at com.group8.view.Query.<init>(Query.java:43)
at com.group8.execution.Execution.main(Execution.java:24)
我已经有了这个程序。我决定尝试调整它,以便我可以应用Spring(尝试学习不同的东西)。我也是第一次使用maven。通过一些教程,似乎得到了一些春季的例子。
一直在移动图像文件夹,因为我认为这可能是一个包装问题。现在我把它们放在我最初在其他程序中使用它们的地方。作为实际类所在的子文件夹。示例:查询位于名为view的包中,图像位于view.images.loginbutton.png
我不知道是否需要将图像声明为maven依赖项?我错过了一些非常明显的东西吗?
答案 0 :(得分:2)
请参阅Class.getResource(...):&#34;如果找不到具有此名称的资源,则返回:URL
个对象或null
。所以,那是NPE的来源。资源很可能不是预期的位置。
&#34;作为实际课程所在的子文件夹&#34; 表示您拥有:
src/main/java/com/group8/view/Query.java
src/main/java/com/group8/view/images/loginbutton.png
如果您正在使用Maven及其建议的默认目录结构,则以下内容更合适:
src/main/java/com/group8/view/Query.java
src/main/resources/com/group8/view/images/loginbutton.png
答案 1 :(得分:1)
您必须将所有图片放入src/main/resources
。如果您没有此文件夹,请创建它。
然后清理并构建您的proyect,当您运行它时,它将起作用:)