如何修改基于 NetBeans 平台的应用程序的 main 方法?

How to Modify the main Method of a NetBeans Platform-Based Application?

提问人:Dawid 提问时间:11/16/2023 更新时间:11/17/2023 访问量:20

问:

我正在开发基于 Maven 和 NetBeans 平台的 Java 桌面应用程序。我的用例要求在发生其他任何事情之前设置系统属性作为第一步。我需要在方法中执行此操作,并且在 中使用块对于我的要求来说为时已晚。我面临的挑战是,我无法在基于 NetBeans 平台的 Java 桌面应用程序中找到该方法。mainstaticModulInstallmain

有人可以指导我在基于 NetBeans 平台的应用程序中的何处查找该方法,或者如何为此类应用程序编写自己的方法吗?我很欣赏对这个问题的任何见解或解决方案。mainmain

java netbeans netbeans 平台 插件 netbeans-12

评论


答:

0赞 Dawid 11/17/2023 #1

根据 https://github.com/apache/netbeans/issues/6708#issuecomment-1814673467 的说法,基于 NetBeans 平台的应用程序的主要方法无法自定义。

0赞 Joachim Rohde 11/23/2023 #2

我曾经遇到过类似的问题,其中 OnStart 注释(/示例)执行得太晚了。

由于我只有一个 NetBeans 模块,因此我引入了一个抽象的 TopComponent 类。在构造函数中,我有一个同步的初始化块。所有其他 TopComponent 都是从抽象类扩展而来的。由于模块的初始化顺序不分先后,因此加载的第一个模块将初始化代码。

这对我来说效果很好,尽管我认为它很笨拙。

(至少)您需要考虑两件事:

  • 您可能会使用一个标志来指示初始化是否已经完成。不要使用普通的布尔值,而是使用 AtomicBoolean,否则您的初始化可能会被多次调用
  • 如果您引入了新的 TopComponent,请不要忘记从抽象类扩展
0赞 Dawid 12/19/2023 #3

我通过这篇文章中提供的指导成功解决了我的问题: https://stackoverflow.com/a/12908982/13583700

我使用自定义方法将系统属性设置为初始步骤,确保它先于任何其他操作。之后,我调用了 NetBeans 的方法。mainmain