Java 带有maven的Netbeans平台应用程序在bundle.properties更改时失败
我正在使用Netbeans平台7.4开发一个桌面应用程序。我在Netbeans向导中使用maven创建了这个项目。我在模块中创建了一个模块和一个topcomponent-到目前为止还不错。但是,当我从topcomponent的属性窗口更改捆绑包文件时,它无法正确编译模块,并出现以下异常:Java 带有maven的Netbeans平台应用程序在bundle.properties更改时失败,java,maven,netbeans,localization,netbeans-platform,Java,Maven,Netbeans,Localization,Netbeans Platform,我正在使用Netbeans平台7.4开发一个桌面应用程序。我在Netbeans向导中使用maven创建了这个项目。我在模块中创建了一个模块和一个topcomponent-到目前为止还不错。但是,当我从topcomponent的属性窗口更改捆绑包文件时,它无法正确编译模块,并出现以下异常: java.lang.IllegalStateException: Cannot find TopComponent with preferredID 新的bundle文件确实存在于项目中-只是默认文件夹上方的
java.lang.IllegalStateException: Cannot find TopComponent with preferredID
新的bundle文件确实存在于项目中-只是默认文件夹上方的一个文件夹。当我把包换成旧包时,它又能工作了
我知道属性窗口中的捆绑包更改是有效的,因为如果我创建一个没有maven的应用程序,我就可以进行更改
我为什么要这么做?我的应用程序将有几个屏幕,如果为每个窗口创建一个新的捆绑文件,本地化将无法管理。我尝试使用一个bundle文件并将所有内容都放在其中
任何帮助都将不胜感激。我并不完全了解您所做的事情以及原因,但可能与此相关。启用“保存时编译”时,保存操作不会在注释处理器中重新生成非类内容。你必须要么做干净的构建,要么在保存时禁用编译。它是关于自动代码生成的 当我从捆绑中设置组件的文本时,自动生成的代码采用以下格式:
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编辑器的属性窗口误导了。如果我可以在那里找到bundle文件,那么自动代码生成也应该反映这种更改 此问题找不到具有preferredID的TopCoponent。。。在加载TopComponent之前出现问题时经常发生 一个简单的例子:您尝试在构造函数中加载在任何深度都失败的内容 这条未经证实的消息不止一次让我发疯 也回答
希望这有帮助。在要更改捆绑包的组件的Netbeans中的属性窗口中,检查自动内部化,并且属性捆绑包文件路径是否正确?这就是我如何为许多组件使用相同的捆绑包文件的方法。是的,没错。它不适用于Maven创建的项目。我可以对非maven项目使用相同的捆绑包文件。我已经发现了这个bug,尝试了解决方案,但不幸的是,事实并非如此。要重现这个问题,请执行以下步骤:1-从maven类别创建一个新的Netbeans应用程序。这将创建一个父级、应用程序和品牌项目。2-再次从Maven类别创建Netbeans模块。3-在此模块上创建一个新窗口,即topComponent,并添加一些UI元素。4-运行需要将模块作为依赖项添加到应用程序项目并禁用测试代码的项目。5-现在,创建一个新的bundle.properties文件,并在topComponent属性窗口中指向它。重新运行应用程序-它将失败。