我已经完全厌倦了使用 NetBeans IDE 8.x(目前使用 8.0.1)几个月了 - 它看起来就像地狱(说真的)。当对项目(尤其是 Java EE Web 应用程序 - 在不同包中包含数百个 Java 类)进行一些外部更改或尝试清洁和构建项目(尤其是企业模块),项目背景扫描启动,这会异常地在几乎所有由 JPA 生成的类中传播编译时错误静态元模型 https://docs.oracle.com/javaee/7/tutorial/persistence-criteria002.htm在 EJB 模块中使用,如下所示快照 https://i.stack.imgur.com/uilLZ.png.
令人惊讶的是,如果在 IDE 中打开这些错误的类,IDE 不再显示编译时错误(由红色卷线表示) - 我不能说出原因,因为我自己也不知道。
有时,如果 IDE 重新启动,它会启动项目背景扫描如果 IDE 一次又一次重新启动至少 10 次,则可能会消除这些错误(在大多数情况下不会)!
这种情况发生的时间和原因尚不确定,但有一点是确定的——它发生的原因是JPA 生成的静态元模型。 IDE 显然不知道以下划线结尾的类(元模型的类)。这只是浪费时间——构建一个应用程序需要几个小时或几天的时间——我不得不从头开始一个一个地重新创建所有这些类好几次。
在 8.x 版本之前,这种情况不会发生。 8.0 和 8.0.1 都有相同的问题(我什至不太确定这是否是一个问题。在使用 NetBeans 8.0 时,我错误地认为以后的版本不会强加此行为)。
为了重现这个问题,
- 应用程序必须具有 JPA 生成的静态元模型。
- 应用程序应该(不是必须)使用类库它保存远程 EJB 的接口。
在非常小的应用程序中,这可能会发生,也可能不会发生(我自己无法很好地确认这个问题的原因,也不能对此说什么)。
有人在使用 NetBeans IDE(尤其是 8.x)时遇到此类问题吗?这使得使用此 IDE 开发应用程序几乎不可能——这只是一种挫败感? IDE 是否有一些我可能缺少的设置?我可能以错误的方式部署应用程序吗?
我只能说一件事——项目背景扫描IDE 执行不正确或者简直就是地狱。
我部署应用程序的方式(Java EE 包含一些远程 EJB(包括许多本地 EJB),它们由类库)
- 清理并构建类库
- 清理并构建企业应用程序(IDE 用三角形表示的 EJB 模块)(这一步是罪魁祸首)
- 再次清理并构建类库(完成上述两步后)
- 部署应用程序
这些步骤是在第一次构建应用程序或对应用程序进行一些重大更改时执行的。否则,只需最后两个步骤就足以将应用程序部署到服务器(我通常这样做)。
有了这个问题,几乎无法继续下去。有没有(至少是暂时的)解决方案/解决方法?
One additional thing. This not only happens in Java EE applications but I have another project that uses Spring in which this problem often happens.
EDIT :
有时(同样不确定何时会发生),主要选项包括清洁和构建类库的子菜单被禁用,阻止我们执行清洁和构建如下所示快照 https://i.stack.imgur.com/o4ILx.png(右键单击类库打开子菜单)。
当 IDE 重新启动随机次数(1 次、2 次、5 次、10 次甚至更多次。完全不确定重新启动 IDE 多少次可以使子菜单中的这些选项启用)时,会启用哪些选项。
EDIT 2 :
该应用程序使用以下主要组件。
- JSF 2.2.8-02
- PrimeFaces 5.1(社区版本)
- PrimeFaces 扩展 2.1.0(社区版本)
- OmniFaces 1.8.1
- 具有 JPA 2.1 的 EclipseLink 2.5.2(以及 EclipseLink JPA ModelGen)
- Java EE 7
- GlassFish 服务器 4.1
- NetBeans IDE 8.0.1
- JDK 8u25