使用maven的Netbeans平台应用程序在bundle.properties更改时失败

时间:2014-01-07 13:11:51

标签: java maven netbeans localization netbeans-platform

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

java.lang.IllegalStateException: Cannot find TopComponent with preferredID

新的捆绑文件确实存在于项目中 - 只是默认文件夹上方的文件夹。当我将捆绑包更改为旧捆绑包时,它会再次起作用。

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

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

任何帮助将不胜感激。

3 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

我明白了。这是关于自动代码生成。

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

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编辑器的属性窗口误导了。如果我可以在那里使用捆绑文件,那么自动代码生成也应该反映出这种变化。

答案 2 :(得分:0)

此问题"找不到具有preferredID的TopCoponent ..."在加载TopComponent之前发生问题时经常发生。

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

这个无法解释的信息使我不止一次发疯!

(也回答here

希望这有帮助。