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



我正在使用Netbeans平台(7.4)开发一个桌面应用程序。我在Netbeans向导中使用maven创建了该项目。我在模块中创建了一个模块和一个顶部组件——到目前为止还不错。然而,当我从顶组件的属性窗口更改捆绑文件时,它没有正确编译模块,并给出以下异常:

java.lang.IllegalStateException: Cannot find TopComponent with preferredID

新的捆绑文件确实存在于项目中——只是默认文件上方的一个文件夹。当我把捆绑包换成旧的时,它又起作用了。

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

我为什么要这么做?我的应用程序将有几个屏幕,如果为每个窗口创建一个新的捆绑文件,本地化将是不可管理的。我试着使用一个单独的捆绑文件,并把所有的东西都放进去

任何帮助都将不胜感激。

当在加载TopComponent之前出现问题时,"找不到preferredID为的TopCopComponent…"的问题经常发生。

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

这条未经解释的信息不止一次让我生气!

(此处也有回答)

希望这能有所帮助。

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

我想明白了。它是关于自动代码生成的。

当我从捆绑包中设置组件的文本时,自动生成的代码是这样的格式:

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

这意味着bundle.properties和源文件应该在同一个包上。我的目的是统一bundle.properties文件并使用单个文件。为此,我创建了一个bundle.properties文件,而不是在源文件的同一个包中。我从编辑器的属性窗口中选择了捆绑文件来使用这个捆绑文件。然而,所选的bundle路径并没有反映到自动生成的代码格式中,因此它看起来仍然是旧路径。此代码已成功生成,但由于缺少资源而未能运行。

为了克服这个问题,我用统一的bundle.properties文件在同一个包上创建了一个伪类,并将其命名为"Resources.java"。然后,我修改了自动代码生成格式如下:

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

设置后我需要组织导入,但它有效。

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

相关内容

最新更新