我在使用Netbeans时遇到了问题,当我尝试按照他们的说明创建Java Web时:
选择文件|新建项目。
在类别下,选择Java Web。
在项目下,选择Web应用程序。
单击下一步。Web服务器-- Apache Tomcat 7.0.42
但是Java版本--只有EE6和EE5。为什么不显示EE7??我需要安装任何插件吗?
我已经安装了以下命令:
JDK 1.7_upadte_42
Netbeans 7.3.1
Apache Tomcat 7.0.42 发布于 2014-09-05 02:34:25
简而言之:对于JavaEE7web项目,您需要使用Tomcat 8+。此外(如上所述),您可能需要使用更高版本的NetBeans (7.4+)才能获得完全支持。
长答案:我在这里回答得有点晚,但我发布了一个答案,以便记录在案,以防其他人看到这个问题并澄清误解。与流行的想法相反,您可以将Java应用程序部署到Tomcat上()。
这里有两个相关的Java EE配置文件:“完整”配置文件(包括完整的Java EE堆栈)和"Web“配置文件(完整配置文件的子集,它被设计为更容易由servlet容器实现)。如前所述,如果您必须使用仅在完整JavaEE7概要中提供的功能,则需要将其部署到应用服务器,如Glassfish 4+、Jboss Wildfly 8.1+或Jeus8。
然而,Tomcat确实符合Java Web,所以您可以将Java应用程序部署到它上面,只要您坚持web profile提供的功能。*通常(如果不是通常的话)web profile就是您所需要的全部。发问者提到的web项目只使用web配置文件中的内容。Tomcat 7遵循Java EE 6 Web profile,Tomcat 8遵循Java EE 7 Web profile,所以如果OP想要使用EE 7,只需升级到Tomcat 8即可。
* Oracle通过为每个配置文件分发特定的API jars (为完整配置文件分发“javaee-api”,为web配置文件分发"javaee-web-api“等),可以轻松地坚持一个或另一个配置文件。这是创建Java EE应用程序所需的唯一依赖项**,甚至不需要(也不应该)将其捆绑到WAR中。实际上,您可能需要捆绑(但不是针对)一些库--或者使用Tomcat的TomEE变体--才能使用所有的EE7Web特性。
**如果你在你的构建文件中看到关于“批注的目录”和“批注的API”的官样文章,那并不是一个真正的依赖,只是为了确保你的代码根据正确的类版本进行编译。例如,标准(非EE )Java7运行时已经包含一个版本的JPA,但是JavaEE7包含一个不同的版本,因此编译器需要知道要使用哪个版本。不要去掉那些官样文章,否则你可能(但很可能不会)遇到运行时“类版本不正确”的问题。
发布于 2013-10-22 13:39:31
目前,Netbeans 7.3.1只部分支持Java EE 7。他们将在NB 8.0中支持它。此外,您还需要Tomcat 8 for Java EE 7,但它们的支持仍然是部分的。Glassfish 4.0是目前的发展方向。
以下是一些有用的文档:
http://wiki.netbeans.org/JavaEE7
http://tomcat.apache.org/whichversion.html
http://docs.oracle.com/javaee/7/tutorial/doc/
https://stackoverflow.com/questions/19509724
复制相似问题