【问题标题】:Maven War Deployment Error in TomcatTomcat 中的 Maven War 部署错误
【发布时间】:2013-03-15 05:08:50
【问题描述】:

基本上我无法克服这个错误,一次又一次地尝试。

我已将我当前的 javaee 项目移植到 maven,从 maven 3.0.3 发起了一场战争,这似乎没有部署在 tomcat 6.0.10 中。我使用的是 jdk 1.7(不过,我在使用 jdk 1.6 和Tomcat 7)

它抛出的错误是

Mar 15, 2013 10:24:39 AM org.apache.catalina.loader.WebappClassLoader validateJa
rFile
INFO: validateJarFile(D:\apache-tomcat-6.0.10\webapps\Name\WEB-INF\lib\
javaee-api-5.0-1.jar) - jar not loaded. See Servlet Spec 2.3, section 9.7.2. Off
ending class: javax/servlet/Servlet.class
Mar 15, 2013 10:24:39 AM org.apache.catalina.loader.WebappClassLoader validateJa
rFile
INFO: validateJarFile(D:\apache-tomcat-6.0.10\webapps\Name\WEB-INF\lib\
servlet-api-2.5.jar) - jar not loaded. See Servlet Spec 2.3, section 9.7.2. Offe
nding class: javax/servlet/Servlet.class
SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further detail
s.
Inside Cache Manager Initialization new ....
java.lang.NullPointerException
Mar 15, 2013 10:24:59 AM org.apache.catalina.core.StandardContext start
SEVERE: Error listenerStart
Mar 15, 2013 10:24:59 AM org.apache.catalina.core.StandardContext start
SEVERE: Context [/Name] startup failed due to previous errors

当我试图找出错误“jar not loaded. See Servlet Spec 2.3, section 9.7.2”时,它说首选 jar 必须在编译和运行时都存在,所以我添加了 servlet-api- 2.5.jar里面的pom.xml。 javaee-api-5.0.1.jar 已经在那里了。

添加依赖后,我得到了同样的错误。

任何人都知道这种奇怪的行为。

【问题讨论】:

标签: jakarta-ee maven tomcat


【解决方案1】:

将servlet api 的范围更改为<scope>provided</scope>,因为它是由tomcat提供的。 javaee-api 不是由 tomcat 提供的,所以请保留在您的 webapp 中。

Tomcat 不支持完整的 Java EE 堆栈,但只支持其中的一部分(即支持 servlet-api,但不支持 JTA、JPA、JMS):这就是为什么您需要在您的网络应用

【讨论】:

  • 是否所有 Java EE 功能都可以在 Tomcat 中仅通过添加该依赖项来工作?不需要使用 TomEE?
  • @PanuHaaramo 没有。Tomcat 嵌入了 servlet-API 的实现,但没有 JTA、JPA、JMS 的实现......所以要将它们与 tomcat 一起使用,您必须明确添加您最喜欢的那些实现类路径中的规范。
【解决方案2】:

“jar 未加载”错误是由多个 javax/servlet/Servlet.class 供 Tomcat 运行时选择引起的。从您应用的WEB-INF/lib 中删除javaee-api-5.0-1.jarservlet-api-2.5.jar。 Tomcat 已经提供了这些 jar。在<TOMCAT_HOME>\lib 中验证这一点,看看这些罐子已经在那里了。

【讨论】:

  • servlet-api-2.5.jar 存在,将其删除但 javaee-api-5.0-1.jar 不存在,所以我仍然卡住了。 tomcat 是否有任何依赖于 javaee-api jar 的库?
  • javaee-api-5.0.1.jar 不在哪里?在<TOMCAT_HOME>/lib?无论如何尝试从WEB-INF/lib 中删除它,看看会发生什么。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-01-03
  • 2017-07-07
  • 1970-01-01
  • 1970-01-01
  • 2017-05-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多