eclipse ValidateJarFile(D:\path\) - jar 未加载。请参阅 Servlet 规范 3.0,第 10.7.2 节。违规类:javax/servlet/Servlet.class

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/28870030/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-09-19 22:27:28  来源:igfitidea点击:

ValidateJarFile(D:\path\) - jar not loaded. See Servlet Spec 3.0, section 10.7.2. Offending class: javax/servlet/Servlet.class

javaeclipsespringapachetomcat

提问by EMM

This question is asked multiple times here but due to my little knowledge of using tomcat 7 with Eclipse IDE for J2EE Dev and Gradle as a build tool I am not able to fully utilize the help peovided by the members. Thus, this question.

这个问题在这里被多次询问,但由于我对使用 Eclipse IDE for J2EE Dev 和 Gradle 作为构建工具的 tomcat 7 知之甚少,我无法充分利用成员提供的帮助。于是,这个问题。

IDE:

IDE:

         Eclipse Java EE IDE for Web Developers.  
         Version: Luna Service Release 1 (4.4.1)

Build toolGradle 1.3

构建工具Gradle 1.3

Servertomcat 7 - configured in Eclipse

服务器tomcat 7 - configured in Eclipse

Error trace:

错误跟踪:

Mar 05, 2015 9:49:36 AM org.apache.tomcat.util.digester.SetPropertiesRule begin
WARNING: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property 'source' to 'org.eclipse.jst.j2ee.server:com.expedia.globalpayments.incentiverecon' did not find a matching property.
Mar 05, 2015 9:49:36 AM org.apache.catalina.startup.VersionLoggerListener log
INFO: Server version:        Apache Tomcat/7.0.57
Mar 05, 2015 9:49:36 AM org.apache.catalina.startup.VersionLoggerListener log
INFO: Server built:          Nov 3 2014 08:39:16 UTC
Mar 05, 2015 9:49:36 AM org.apache.catalina.startup.VersionLoggerListener log
INFO: Server number:         7.0.57.0
Mar 05, 2015 9:49:36 AM org.apache.catalina.startup.VersionLoggerListener log
INFO: OS Name:               Windows 7
Mar 05, 2015 9:49:36 AM org.apache.catalina.startup.VersionLoggerListener log
INFO: OS Version:            6.1
Mar 05, 2015 9:49:36 AM org.apache.catalina.startup.VersionLoggerListener log
INFO: Architecture:          amd64
Mar 05, 2015 9:49:36 AM org.apache.catalina.startup.VersionLoggerListener log
INFO: JAVA_HOME:             C:\Expedia\Java\jdk1.7.0_71\jre
Mar 05, 2015 9:49:36 AM org.apache.catalina.startup.VersionLoggerListener log
INFO: JVM Version:           1.7.0_71-b14
Mar 05, 2015 9:49:36 AM org.apache.catalina.startup.VersionLoggerListener log
INFO: JVM Vendor:            Oracle Corporation
Mar 05, 2015 9:49:36 AM org.apache.catalina.startup.VersionLoggerListener log
INFO: CATALINA_BASE:         D:\Office\project\workspace_2015_april\.metadata\.plugins\org.eclipse.wst.server.core\tmp1
Mar 05, 2015 9:49:36 AM org.apache.catalina.startup.VersionLoggerListener log
INFO: CATALINA_HOME:         D:\Office\tomcat\tomcat-7
Mar 05, 2015 9:49:36 AM org.apache.catalina.startup.VersionLoggerListener log
INFO: Command line argument: -Dcatalina.base=D:\Office\project\workspace_2015_april\.metadata\.plugins\org.eclipse.wst.server.core\tmp1
Mar 05, 2015 9:49:36 AM org.apache.catalina.startup.VersionLoggerListener log
INFO: Command line argument: -Dcatalina.home=D:\Office\tomcat\tomcat-7
Mar 05, 2015 9:49:36 AM org.apache.catalina.startup.VersionLoggerListener log
INFO: Command line argument: -Dwtp.deploy=D:\Office\project\workspace_2015_april\.metadata\.plugins\org.eclipse.wst.server.core\tmp1\wtpwebapps
Mar 05, 2015 9:49:36 AM org.apache.catalina.startup.VersionLoggerListener log
INFO: Command line argument: -Djava.endorsed.dirs=D:\Office\tomcat\tomcat-7\endorsed
Mar 05, 2015 9:49:36 AM org.apache.catalina.startup.VersionLoggerListener log
INFO: Command line argument: -Denvironment.properties.location=D:\Office\incentiverecon\irEnvironmentProperties\environment.properties
Mar 05, 2015 9:49:36 AM org.apache.catalina.startup.VersionLoggerListener log
INFO: Command line argument: -Dir.log.dir=D:\Office\incentiverecon\irlogs
Mar 05, 2015 9:49:36 AM org.apache.catalina.startup.VersionLoggerListener log
INFO: Command line argument: -Dfile.encoding=Cp1252
Mar 05, 2015 9:49:36 AM org.apache.catalina.core.AprLifecycleListener lifecycleEvent
INFO: The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: C:\Expedia\Java\jdk1.7.0_71\bin;C:\Windows\Sun\Java\bin;C:\Windows\system32;C:\Windows;C:\Program Files (x86)\Intel\iCLS Client\;C:\Program Files\Intel\iCLS Client\;C:\Program Files (x86)\AMD APP\bin\x86_64;C:\Program Files (x86)\AMD APP\bin\x86;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program Files\Intel\WiFi\bin\;C:\Program Files\Common Files\Intel\WirelessCommon\;C:\Program Files (x86)\ATI Technologies\ATI.ACE\Core-Static;C:\Program Files (x86)\Intel\OpenCL SDK.0\bin\x86;C:\Program Files (x86)\Intel\OpenCL SDK.0\bin\x64;C:\Program Files\Intel\Intel(R) Management Engine Components\DAL;C:\Program Files\Intel\Intel(R) Management Engine Components\IPT;C:\Program Files (x86)\Intel\Intel(R) Management Engine Components\DAL;C:\Program Files (x86)\Intel\Intel(R) Management Engine Components\IPT;C:\Expedia\Java\jdk1.7.0_71\bin;C:\gradle\gradle-1.3\bin;C:\Expedia\SQLServer(x86)0\Tools\Binn\VSShell\Common7\IDE\;C:\Expedia\SQLServer(x86)0\Tools\Binn\;C:\Expedia\SQLServerShared0\Tools\Binn\;C:\Expedia\SQLServer(x86)0\DTS\Binn\;C:\Expedia\SQLServerShared0\DTS\Binn\;C:\Program Files (x86)\Git\cmd;C:\Program Files\MongoDB 2.6 Standard\bin;C:\Expedia\KDiff3;.
Mar 05, 2015 9:49:36 AM org.apache.coyote.AbstractProtocol init
INFO: Initializing ProtocolHandler ["http-bio-8080"]
Mar 05, 2015 9:49:36 AM org.apache.coyote.AbstractProtocol init
INFO: Initializing ProtocolHandler ["ajp-bio-8009"]
Mar 05, 2015 9:49:36 AM org.apache.catalina.startup.Catalina load
INFO: Initialization processed in 378 ms
Mar 05, 2015 9:49:36 AM org.apache.catalina.core.StandardService startInternal
INFO: Starting service Catalina
Mar 05, 2015 9:49:36 AM org.apache.catalina.core.StandardEngine startInternal
INFO: Starting Servlet Engine: Apache Tomcat/7.0.57
Mar 05, 2015 9:49:36 AM org.apache.catalina.util.SessionIdGenerator createSecureRandom
INFO: Creation of SecureRandom instance for session ID generation using [SHA1PRNG] took [249] milliseconds.
Mar 05, 2015 9:49:37 AM org.apache.catalina.loader.WebappClassLoader validateJarFile
INFO: validateJarFile(D:\Office\project\workspace_2015_april\.metadata\.plugins\org.eclipse.wst.server.core\tmp1\wtpwebapps\com.expedia.globalpayments.incentiverecon\WEB-INF\lib\javax.servlet-2.3.jar) - jar not loaded. See Servlet Spec 3.0, section 10.7.2. Offending class: javax/servlet/Servlet.class
Mar 05, 2015 9:49:40 AM org.apache.catalina.startup.TaglibUriRule body
INFO: TLD skipped. URI: http://www.springframework.org/tags is already defined
Mar 05, 2015 9:49:40 AM org.apache.catalina.startup.TaglibUriRule body
INFO: TLD skipped. URI: http://www.springframework.org/tags/form is already defined
Mar 05, 2015 9:49:40 AM org.apache.catalina.core.ApplicationContext log
INFO: No Spring WebApplicationInitializer types detected on classpath
Mar 05, 2015 9:49:40 AM org.apache.catalina.core.ApplicationContext log
INFO: Initializing Spring root WebApplicationContext
Mar 05, 2015 9:49:41 AM org.apache.catalina.core.StandardContext listenerStart
SEVERE: Exception sending context initialized event to listener instance of class org.springframework.web.context.ContextLoaderListener
org.springframework.beans.factory.BeanDefinitionStoreException: Failed to read candidate component class: file [D:\Office\project\workspace_2015_april\.metadata\.plugins\org.eclipse.wst.server.core\tmp1\wtpwebapps\com.expedia.globalpayments.incentiverecon\WEB-INF\classes\com\expedia\globalpayments\ir\checker\HealthCheckFilter.class]; nested exception is java.lang.IncompatibleClassChangeError: class org.springframework.core.type.classreading.ClassMetadataReadingVisitor has interface org.springframework.asm.ClassVisitor as super class
    at org.springframework.context.annotation.ClassPathScanningCandidateComponentProvider.findCandidateComponents(ClassPathScanningCandidateComponentProvider.java:301)
    at org.springframework.context.annotation.ClassPathBeanDefinitionScanner.doScan(ClassPathBeanDefinitionScanner.java:242)
    at org.springframework.context.annotation.ComponentScanBeanDefinitionParser.parse(ComponentScanBeanDefinitionParser.java:85)
    at org.springframework.beans.factory.xml.NamespaceHandlerSupport.parse(NamespaceHandlerSupport.java:74)
    at org.springframework.beans.factory.xml.BeanDefinitionParserDelegate.parseCustomElement(BeanDefinitionParserDelegate.java:1424)
    at org.springframework.beans.factory.xml.BeanDefinitionParserDelegate.parseCustomElement(BeanDefinitionParserDelegate.java:1414)
    at org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.parseBeanDefinitions(DefaultBeanDefinitionDocumentReader.java:187)
    at org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.doRegisterBeanDefinitions(DefaultBeanDefinitionDocumentReader.java:141)
    at org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.registerBeanDefinitions(DefaultBeanDefinitionDocumentReader.java:110)
    at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.registerBeanDefinitions(XmlBeanDefinitionReader.java:508)
    at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.doLoadBeanDefinitions(XmlBeanDefinitionReader.java:391)
    at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:335)
    at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:303)
    at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:180)
    at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:216)
    at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:187)
    at org.springframework.web.context.support.XmlWebApplicationContext.loadBeanDefinitions(XmlWebApplicationContext.java:125)
    at org.springframework.web.context.support.XmlWebApplicationContext.loadBeanDefinitions(XmlWebApplicationContext.java:94)
    at org.springframework.context.support.AbstractRefreshableApplicationContext.refreshBeanFactory(AbstractRefreshableApplicationContext.java:129)
    at org.springframework.context.support.AbstractApplicationContext.obtainFreshBeanFactory(AbstractApplicationContext.java:540)
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:454)
    at org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:403)
    at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:306)
    at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:106)
    at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4994)
    at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5492)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1575)
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1565)
    at java.util.concurrent.FutureTask.run(FutureTask.java:262)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
    at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.IncompatibleClassChangeError: class org.springframework.core.type.classreading.ClassMetadataReadingVisitor has interface org.springframework.asm.ClassVisitor as super class
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClass(ClassLoader.java:800)
    at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
    at org.apache.catalina.loader.WebappClassLoader.findClassInternal(WebappClassLoader.java:2957)
    at org.apache.catalina.loader.WebappClassLoader.findClass(WebappClassLoader.java:1210)
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1690)
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1571)
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClass(ClassLoader.java:800)
    at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
    at org.apache.catalina.loader.WebappClassLoader.findClassInternal(WebappClassLoader.java:2957)
    at org.apache.catalina.loader.WebappClassLoader.findClass(WebappClassLoader.java:1210)
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1690)
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1571)
    at org.springframework.core.type.classreading.SimpleMetadataReader.<init>(SimpleMetadataReader.java:63)
    at org.springframework.core.type.classreading.SimpleMetadataReaderFactory.getMetadataReader(SimpleMetadataReaderFactory.java:82)
    at org.springframework.core.type.classreading.CachingMetadataReaderFactory.getMetadataReader(CachingMetadataReaderFactory.java:102)
    at org.springframework.context.annotation.ClassPathScanningCandidateComponentProvider.findCandidateComponents(ClassPathScanningCandidateComponentProvider.java:277)
    ... 32 more

Mar 05, 2015 9:49:41 AM org.apache.catalina.core.StandardContext startInternal
SEVERE: Error listenerStart
Mar 05, 2015 9:49:41 AM org.apache.catalina.core.StandardContext startInternal
SEVERE: Context [/com.expedia.globalpayments.incentiverecon] startup failed due to previous errors
Mar 05, 2015 9:49:41 AM org.apache.catalina.core.ApplicationContext log
INFO: Closing Spring root WebApplicationContext
Mar 05, 2015 9:49:41 AM org.apache.catalina.core.StandardContext listenerStop
SEVERE: Exception sending context destroyed event to listener instance of class org.springframework.web.context.ContextLoaderListener
java.lang.IllegalStateException: BeanFactory not initialized or already closed - call 'refresh' before accessing beans via the ApplicationContext
    at org.springframework.context.support.AbstractRefreshableApplicationContext.getBeanFactory(AbstractRefreshableApplicationContext.java:170)
    at org.springframework.context.support.AbstractApplicationContext.destroyBeans(AbstractApplicationContext.java:921)
    at org.springframework.context.support.AbstractApplicationContext.doClose(AbstractApplicationContext.java:895)
    at org.springframework.context.support.AbstractApplicationContext.close(AbstractApplicationContext.java:841)
    at org.springframework.web.context.ContextLoader.closeWebApplicationContext(ContextLoader.java:579)
    at org.springframework.web.context.ContextLoaderListener.contextDestroyed(ContextLoaderListener.java:115)
    at org.apache.catalina.core.StandardContext.listenerStop(StandardContext.java:5035)
    at org.apache.catalina.core.StandardContext.stopInternal(StandardContext.java:5687)
    at org.apache.catalina.util.LifecycleBase.stop(LifecycleBase.java:232)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:160)
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1575)
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1565)
    at java.util.concurrent.FutureTask.run(FutureTask.java:262)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
    at java.lang.Thread.run(Thread.java:745)

Mar 05, 2015 9:49:41 AM org.apache.catalina.loader.WebappClassLoader clearReferencesThreads
SEVERE: The web application [/com.expedia.globalpayments.incentiverecon] appears to have started a thread named [AsyncAppender-Dispatcher-Thread-1] but has failed to stop it. This is very likely to create a memory leak.
Mar 05, 2015 9:49:41 AM org.apache.catalina.loader.WebappClassLoader clearReferencesThreads
SEVERE: The web application [/com.expedia.globalpayments.incentiverecon] appears to have started a thread named [AsyncAppender-Dispatcher-Thread-2] but has failed to stop it. This is very likely to create a memory leak.
Mar 05, 2015 9:49:41 AM org.apache.coyote.AbstractProtocol start
INFO: Starting ProtocolHandler ["http-bio-8080"]
Mar 05, 2015 9:49:41 AM org.apache.coyote.AbstractProtocol start
INFO: Starting ProtocolHandler ["ajp-bio-8009"]
Mar 05, 2015 9:49:41 AM org.apache.catalina.startup.Catalina start
INFO: Server startup in 4906 ms

回答by John R

You shouldn't include a JAR with javax.servlet.Servlet as it is provided by Tomcat. See this questionfor details on how to mark the dependency as provided. Conveniently enough, the top rated answer provides an example related to the Servlet API.

您不应在 javax.servlet.Servlet 中包含 JAR,因为它是由 Tomcat 提供的。有关如何将依赖项标记为提供的详细信息,请参阅此问题。非常方便的是,评分最高的答案提供了一个与 Servlet API 相关的示例。

Tomcat is smart enough to not load this JAR and instead logs a warning, so that particular message is not what's causing your startup/deployment failure.

Tomcat 足够聪明,不会加载此 JAR 而是记录警告,因此该特定消息不是导致启动/部署失败的原因。

While you should address the warning, the IncompatibleClassChangeErroris your main issue. This is most likely caused by mixing different versions of Spring in the same project. For example, some JARs from Spring 3.1 and others from 3.2. Try running gradle dependenciesand check that all of your Spring JARs are from the same release.

虽然您应该解决警告,但这IncompatibleClassChangeError是您的主要问题。这很可能是由于在同一项目中混合了不同版本的 Spring 造成的。例如,一些来自 Spring 3.1 的 JAR 和一些来自 3.2 的 JAR。尝试运行gradle dependencies并检查您的所有 Spring JAR 是否来自同一版本。