【问题标题】:Netbeans Platform App with maven fails on bundle.properties change带有 maven 的 Netbeans 平台应用程序在 bundle.properties 更改时失败
【发布时间】:2014-01-07 13:11:51
【问题描述】:

我正在使用 Netbeans 平台 (7.4) 开发桌面应用程序。我在 Netbeans 向导中使用 maven 创建了项目。我在模块中创建了一个模块和一个顶级组件 - 到目前为止一切都很好。但是,当我从 topcomponent 的属性窗口更改捆绑文件时,它无法正确编译模块并给出以下异常:

java.lang.IllegalStateException: Cannot find TopComponent with preferredID

新的捆绑文件肯定存在于项目中 - 只是默认文件夹上方的一个文件夹。当我将捆绑包更改为旧捆绑包时,它又可以工作了。

我知道属性窗口中的捆绑更改有效,因为如果我创建一个没有 maven 的应用程序,我可以进行更改。

我为什么要这样做?我的应用程序将有几个屏幕,如果为每个窗口创建一个新的捆绑文件,本地化将无法管理。我尝试使用单个捆绑文件并将所有内容都放入其中。

任何帮助将不胜感激。

【问题讨论】:

  • 在 Netbeans 的要更改捆绑包的组件的属性窗口中,检查自动内部化并且属性捆绑包文件路径是好的?这就是我设法为许多组件使用相同的捆绑文件的方式。
  • 是的,没错。它不适用于 Maven 创建的项目。我可以将相同的捆绑文件用于非 Maven 项目。

标签: java maven netbeans localization netbeans-platform


【解决方案1】:

在加载 TopComponent 之前出现问题时,经常会出现“找不到具有 PreferredID 的 TopCoponent...”的问题。

一个简单的例子:你尝试在构造函数中加载一些失败的东西(在任何深度)。

这条不明确的信息让我不止一次生气!

(也回答了here

希望这会有所帮助。

【讨论】:

    【解决方案2】:

    我并不完全关注您所做的事情以及原因,但可能与问题 https://netbeans.org/bugzilla/show_bug.cgi?id=221781 有关。打开保存时编译时,保存操作不会在注释处理器中重新生成非类内容。您必须进行干净的构建(单独构建不会削减它)或在保存时禁用编译

    【讨论】:

    • 我已经发现了这个错误,尝试了解决方案,但不幸的是事实并非如此。
    • 要重现该问题,请执行以下步骤: 1- 从 Maven 类别创建一个新的 Netbeans 应用程序。这将创建一个父项目、应用程序和品牌项目。 2- 从 Maven 类别再次创建一个 Netbeans 模块。 3- 在这个模块上创建一个新的“窗口”,也就是 topComponent(并添加一些 UI 元素)。 4-运行项目(您需要将模块作为依赖项添加到应用程序项目并禁用测试代码)。 5- 现在,创建一个新的 bundle.properties 文件,并在 topComponent 属性窗口中指向它。重新运行应用程序 - 它会失败。
    【解决方案3】:

    我想通了。这是关于自动代码生成的。

    当我从包中设置组件的文本时,自动生成的代码采用以下格式:

    org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")
    

    也就是说,bundle.properties 和源文件应该在同一个包中。我的目的是统一 bundle.properties 文件并使用单个文件。为此,我创建了一个 bundle.properties 文件,而不是在源文件的同一个包中。我从编辑器的属性窗口中选择了包文件来使用这个包文件。但是,选定的包路径不会反映到自动生成的代码格式 - 因此它仍然看起来是旧路径。此代码构建成功,但由于缺少资源而无法运行。

    为了克服这个问题,我在同一个包中创建了一个虚拟类,它带有统一的 bundle.properties 文件,并将其命名为“Resources.java”。然后,我修改了自动代码生成格式如下:

    org.openide.util.NbBundle.getMessage(Resources.class, "{key}")
    

    我需要在设置后组织导入,但它可以工作。

    我知道我的问题并不常见,解决方案有点难看,但我被 Netbeans 编辑器的属性窗口误导了。如果我可以在那里打包文件,那么自动代码生成也应该反映这种变化。

    【讨论】:

      猜你喜欢
      • 2016-08-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-11-28
      • 1970-01-01
      相关资源
      最近更新 更多