5

我在使用 Netbeans 时遇到问题,当我尝试按照他们的说明创建 Java Web 时:

选择文件 | 新项目。

在类别下,选择 Java Web。

在项目下,选择 Web 应用程序。

点击下一步。网络服务器——Apache Tomcat 7.0.42

但 Java EE 版本只有EE6EE5. 为什么不显示EE7??我需要安装任何插件吗?

我安装了以下内容:

JDK 1.7_upadte_42
Netbeans 7.3.1
Apache Tomcat 7.0.42 
4

3 回答 3

8

Tomcat一开始就不是一个兼容 Java EE 的应用服务器,它是一个 servlet 容器1官网上有明确说明:

Apache Tomcat™ 是 Java Servlet、JavaServer Pages、Java 表达式语言和 Java WebSocket 技术的开源软件实现。

为了使用 Java EE 7+ 功能,您需要使用兼容 Java EE 7+ 的服务器。目前,AFAIK 这仅由GlassFish 4完成。当您访问官方网站时,顶部写着:世界上第一个 Java EE 7 应用服务器。确保您将项目配置为使用 GlassFish 4,然后您可以为您的应用程序使用 Java EE 7 的优势。

请注意,这也包含在Netbeans 7.3.1 社区新闻中:

NetBeans IDE 7.3.1 是对 NetBeans IDE 7.3 的更新,包括以下亮点(强调我的):

  • 支持 Java EE 7 开发
    • 部署到GlassFish 4(不是 Tomcat)
    • 支持主要的 Java EE 7 规范:JSF 2.2、JPA 2.1、JAX-RS 2.0、WebSocket 1.0 等

1至少在 Tomcat 7 之前不会。从 Tomcat 8 看起来它将支持 Java EE 7 配置文件(来自上面链接的官方网站):

Apache Tomcat 项目很自豪地宣布 Apache Tomcat 8 - 8.0.0-RC5 (alpha) 的下一个候选版本。Tomcat 8 与 Java EE 7 保持一致。

于 2013-10-22T05:38:20.543 回答
4

简短回答:您需要将 Tomcat 8+ 用于 Java EE 7 Web 项目。此外(如前所述),您可能需要使用更高版本的 NetBeans (7.4+) 以获得全面支持。

长答案:我在这里回答有点晚了,但我会发布一个答案以备不时之需,以防其他人看到这个问题并消除误解。与普遍的看法相反,您可以将 Java EE 应用程序部署到 Tomcat。

这里有两个相关的 Java EE 配置文件:“完整”配置文件(包括完整的 Java EE 堆栈)和“Web”配置文件(完整配置文件的子集,旨在更容易地由 servlet 容器实现)。如前所述,如果您必须使用仅在完整 Java EE 7 配置文件中可用的功能,则需要部署到应用服务器,例如 Glassfish 4+、[Jboss] Wildfly 8.1+ 或 JEUS 8。

但是,Tomcat确实符合 Java EE Web配置文件,因此您可以将 Java EE 应用程序部署到它,只要您坚持 Web 配置文件提供的功能。* 通常(如果不是通常)Web 配置文件就是您所需要的一切. 提问者提到的网络项目仅使用网络配置文件中的内容。Tomcat 7 符合 Java EE 6 Web 配置文件,而 Tomcat 8 符合 Java EE 7 Web 配置文件,因此 OP 如果要使用 EE 7,只需升级到 Tomcat 8。

* Oracle 通过为每个配置文件分发特定的 API jar(“javaee-api”用于完整配置文件,“javaee-web-api”用于 Web 配置文件等),可以轻松地坚持一个或另一个配置文件。这是您创建 Java EE 应用程序所需的唯一依赖项**,您甚至不必(也不应该)将它捆绑到您的 WAR 中。实际上,您可能需要捆绑(但不编译)一些库点菜 - 或使用 Tomcat 的 TomEE 变体 - 以使用所有 EE 7 Web 功能。

** 如果您在构建文件中看到关于“endorsed dirs”和“endorsed APIs”的 gobbledygook,这不是真正的依赖项,只是为了确保您的代码针对正确的类版本进行编译。例如,标准(非 EE)Java 7 运行时已经包含一个 JPA 版本,但 Java EE 7 包含一个不同的版本,因此编译器需要知道要使用哪个版本。不要取出那个 gobbledygook,否则您可能(但可能不会)遇到运行时“类版本不正确”的问题。

于 2014-09-04T18:34:25.410 回答
2

目前,Netbeans 7.3.1 仅部分支持 Java EE 7。他们将在 NB 8.0 中支持它。此外,Java EE 7 需要 Tomcat 8,但它们的支持仍然是部分的。Glassfish 4.0 是目前的方式。

以下是一些有用的文档:

http://wiki.netbeans.org/JavaEE7

http://tomcat.apache.org/whichversion.html

http://docs.oracle.com/javaee/7/tutorial/doc/

于 2013-10-22T05:39:31.023 回答