【问题标题】:netbeans & java, resourceMap.getString returning nullnetbeans 和 java,资源 Map.getString 返回 null
【发布时间】:2010-01-11 18:03:03
【问题描述】:

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

您好,这里是新手 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

【问题讨论】:

    标签: java netbeans null


    【解决方案1】:

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

    尝试干净的构建(运行 > 清洁并构建主项目)。这通常会解决它。

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

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

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

    效果很好。

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

    这也很好用。

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

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

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

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

    【讨论】:

    • 你的权利,当我最初挖掘时,我注意到 src 目录中的属性文件,没有意识到构建目录中还有第二个属性文件。是的,它们仅在执行清理操作时同步,清理后一切正常,我可以再次打开资源管理。感谢您富有洞察力的回复,非常感谢其他用户受益:如果您的标签正在消失,按钮正在缩小或变平,或者控件没有像文本值一样保留其设置,那么您很可能遇到了类似的问题。
    猜你喜欢
    • 2023-03-16
    • 1970-01-01
    • 2014-12-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-11
    • 1970-01-01
    • 2018-06-09
    相关资源
    最近更新 更多