Java Tomcat6类加载器:它在读哪个Jar?
我有一个巨大的网络应用程序,我必须支持。最近,当我从SVN下载最新的源代码并尝试在Tomcat 6上本地运行它时,我从应用程序运行的一个后台批处理作业中得到以下错误Java Tomcat6类加载器:它在读哪个Jar?,java,apache,tomcat,jar,classloader,Java,Apache,Tomcat,Jar,Classloader,我有一个巨大的网络应用程序,我必须支持。最近,当我从SVN下载最新的源代码并尝试在Tomcat 6上本地运行它时,我从应用程序运行的一个后台批处理作业中得到以下错误 2014-12-23 18:08:27 [taskScheduler-4] TaskUtils$LoggingErrorHandler [ERROR] Unexpected error occurred in scheduled task. java.lang.NoSuchMethodError: javax.xml.stream.
2014-12-23 18:08:27 [taskScheduler-4] TaskUtils$LoggingErrorHandler [ERROR] Unexpected error occurred in scheduled task.
java.lang.NoSuchMethodError: javax.xml.stream.XMLEventFactory.newFactory()Ljavax/xml/stream/XMLEventFactory;
at org.apache.cxf.binding.soap.interceptor.ReadHeadersInterceptor$HeadersProcessor.<clinit>(ReadHeadersInterceptor.java:275)
2014-12-23 18:08:27[taskScheduler-4]TaskUtils$LoggingErrorHandler[ERROR]计划任务中出现意外错误。
java.lang.NoSuchMethodError:javax.xml.stream.XMLEventFactory.newFactory()Ljavax/xml/stream/XMLEventFactory;
位于org.apache.cxf.binding.soap.interceptor.ReadHeaderInterceptor$HeadersProcessor。(ReadHeaderInterceptor.java:275)
因此,我认为问题在于Apache类ReadHeaderInterceptor,我的应用程序的代码调用它试图从XMLEventFactory调用newFactory()方法,但找不到该方法,可能是因为它正在读取旧版本的XMLEventFactory
我认为这是因为我的lib文件夹中有一些jar需要删除或添加。问题是我不知道是哪一个。我看到有几个罐子有XMLEventFactory,包括
woodstox-core-asl-4.2.0
stax2-api-3.1.1
它也是rt.jar中Java6的一部分
那么,在所有这些罐子中,哪一个是它试图读取而没有找到它需要的方法的呢
谢谢。这是JDK/JRE 1.6特定版本(我指的是更新)的问题。这看起来可能很奇怪,但JDK API针对特定的主要版本进行了更改 请在下列地点领取战利品。您可以在那里看到,随着从1.6.0.17版到1.6.0.18版的更改,新方法已添加到XMLEventFactory类中 可能您的JRE版本低于1.6.0.18。我在Apache CXF和动态代理方面也遇到了同样的问题。JRE 1.6.0.14到1.6.0.19的更新修复了这个问题
我希望它能有所帮助。JavaEE应用服务器有一个类加载器的层次结构:引导、应用服务器、应用服务器。如果它在rt.jar中,那么应该首先加载它。该JAR可能位于JVM或应用程序服务器中。检查这些是否与应用程序冲突。