无法在 NetBeans IDE 12.6 中创建企业应用程序

Unable to create Enterprise application in NetBeans IDE 12.6

当我尝试使用向导(Ant 项目)创建企业应用程序时,出现以下错误

java.lang.NullPointerException: Cannot invoke "org.netbeans.modules.j2ee.dd.api.application.Application.setDisplayName(String)" because "this.application" is null
at org.netbeans.modules.j2ee.earproject.ProjectEar.setupDDFromVirtual(ProjectEar.java:290)
at org.netbeans.modules.j2ee.earproject.ProjectEar.getApplication(ProjectEar.java:255)
at org.netbeans.modules.j2ee.earproject.ui.wizards.NewEarProjectWizardIterator.testableInstantiate(NewEarProjectWizardIterator.java:160)
at org.netbeans.modules.j2ee.earproject.ui.wizards.NewEarProjectWizardIterator.instantiate(NewEarProjectWizardIterator.java:139)
at org.openide.loaders.TemplateWizard$InstantiatingIteratorBridge.instantiate(TemplateWizard.java:1048)
at org.openide.loaders.TemplateWizard.handleInstantiate(TemplateWizard.java:602)
at org.netbeans.modules.project.ui.NewProjectWizard.handleInstantiate(NewProjectWizard.java:51)
at org.openide.loaders.TemplateWizard.instantiateNewObjects(TemplateWizard.java:436)
at org.openide.loaders.TemplateWizardIterImpl.instantiate(TemplateWizardIterImpl.java:228)
at org.openide.loaders.TemplateWizardIteratorWrapper$ProgressInstantiatingIterator.instantiate(TemplateWizardIteratorWrapper.java:155)
at org.openide.WizardDescriptor.callInstantiateOpen(WizardDescriptor.java:1602)
at org.openide.WizardDescriptor.callInstantiate(WizardDescriptor.java:1546)
at org.openide.WizardDescriptor.access00(WizardDescriptor.java:67)
[catch] at org.openide.WizardDescriptor$Listener.run(WizardDescriptor.java:2233)
at org.openide.util.RequestProcessor$Task.run(RequestProcessor.java:1418)
at org.netbeans.modules.openide.util.GlobalLookup.execute(GlobalLookup.java:45)
at org.openide.util.lookup.Lookups.executeWith(Lookups.java:278)
at org.openide.util.RequestProcessor$Processor.run(RequestProcessor.java:2033)

当然,向导中的所有字段都已填写。但是,分别创建WAR和EJB就没有报错。只有在创建 EAR 时才会出现错误,即使它是空的。

使用

所有路径拼写正确,目录读/写权限设置

Screen

我可以重现您的问题,NetBeans Bug Report 5953 39=] 已经提出。

错误报告未解决,但问题仅在创建 Jakarta EE 9 企业应用程序时出现。我只需从向导中的 Java EE 版本 下拉列表中选择 Jakarta EE8 即可成功创建 Jakarta EE 8 企业应用程序。

您有多种选择可以解决此问题,但 none 个都不错:

  • 等待 NetBeans 修复问题。绝对不推荐!
  • 如果您不需要 EE 9 功能,请改用 Ant 向导创建 Jakarta EE8 企业应用程序。
  • 使用 Ant 向导创建 Jakarta EE8 企业应用程序,然后“破解”生成的项目以使用 EE 9。
  • 使用另一个 IDE 正确支持此功能。
  • 在另一个 IDE 中创建 EE 9 企业应用程序,然后将项目导入 NetBeans。

使用 Maven 或 Gradle 而不是 Ant,因为构建工具也无济于事:

  • 我在使用 Jakarta EE8 或 Jakarta EE9 时无法创建 Maven 企业应用程序,尽管我没有研究原因。
  • 项目向导甚至不提供 “企业应用程序” 作为使用 Gradle 时的选项。

备注:

Need to figure out whether maybe Web Applications (in Ant, Maven, and Gradle) might not be enough in terms of Java EE support, i.e., do we need Enterprise Applications and EJB-specific project types, if not, let's remove them.

如果您执行以下操作,它可以与 jakarta EE9 一起使用:

所有 pom.xml 个文件中的插件版本:

maven-compiler-plugin 3.9.0

maven-war-plugin 3.3.2

maven-dependency-plugin 3.2.0

在-ejb-的pom.xml文件中将打包war改为jar。

然后:

按以下顺序清理和构建:

top、ejb、web 和 ear。

就这些了。