繁体   English   中英

netbeans和Java,resourceMap.getString返回null

[英]netbeans & java, resourceMap.getString returning null

产品版本:NetBeans IDE 6.8(Build 200912041610)Java:1.6.0_17; Java HotSpot(TM)客户端VM 14.3-b01系统:在x86上运行的Windows 7版本6.1; CP1252; en_GB(nb)

您好,这里的newbee java程序员想知道是否有人可以提供帮助,我在为netbeans中的桌面应用程序更新GUI时遇到了一些问题,以下是详细信息:


我当前的应用程序GUI效果很好,一切都正确显示。

当我通过将netbeans工具箱中的新标签添加到表单上来更新GUI并使用netbeans预览功能时,一切看起来都很棒

但是,当我运行该应用程序时,新标签消失了。

尝试了解问题,我以调试模式运行了该应用程序,并逐步执行了自动生成的initComponents()代码

通过调试,我相信问题来自以下代码行:

TEST_lbl.setText(resourceMap.getString("TEST_lbl.text")); // NOI18N

在此代码行执行之后,TEST_lbl.setText等于null。

所以当我运行该应用程序时,该标签消失了,因为它没有文本值可显示...

我在记事本(.properties文件)中打开了资源映射文件,它在所有其他工作控件的条目中包含条目“ TEST_lbl.text = jLabel1” ...

因此属性文件具有正确的值,但是resourceMap.getString没有检索到它

我可以通过将表格的“自动资源管理”选项从“所有资源”更改为“关”来解决此问题。

结果,这会将自动生成的“ setText”代码行更改为:

TEST_lbl.setText("jLabel1"); 

并在应用程序运行时使标签正确显示


我的第一个问题是,这是一个已知的错误吗? 还是我做了一些愚蠢的事情,不小心更改了设置软件?

如果这不是错误,如何在不更改资源管理设置的情况下解决问题?

如果这是一个错误,关闭自动资源管理的含义是什么?

感谢您的帮助-Gaz

我假设您正在NB(运行>运行主项目)下运行它?

尝试进行干净的构建(运行>清理并构建主项目)。 通常可以解决该问题。

这是构建系统的结构问题。

在干净的存储库中运行项目时(运行>运行主项目):

  1. .class文件被写入$ project / build / classes
  2. 非类文件被复制到树中
  3. 整个事情都是从那里开始的。

很好

如果您“构建”项目(运行>构建主项目):1.将.class文件写入$ project / build / classes 2.将非类文件复制到树中3.将整个内容汇总到一个jar文件。

那也很好。

但是,如果您随后进行更改并运行项目,则类文件和资源现在显示在两个位置:

  • 在构建/类中
  • 在dist / 项目 .jar中

就查找类文件而言,这样做行得通。 但是,资源首先在jar中找到。 因此,在运行时,您的代码会在jar中找到属性文件的过时副本,而不是文件系统中的新副本。

另外:NB在查找资源时会忽略大小写,但是Sun的JVM不会(不确定IcedTea)。 因此,如果使用了错误的情况,则NB可能会坚持认为文件存在,但JVM将无法找到它。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM