将项目导入myeclipse里报错,网上找到解决方法,重启后不报错
解决办法:
在Tomcat服务器的content.xml文件里添加:<Loader delegate="true"/>
错误原因:
tomcat-coyote.jar与catalina.jar冲突
顺便找了一下为什么添加“<Loader delegate="true"/>
”就可以解决报错问题,原文如下:
JVM的classloader加载继承关系分为BootstarpClassLoader --> ExtClassLoader --> SystemClassLoader,应用的WebAppClassLoader继承自SystemClassLoader,在加载具体某个类时,一般会先委托给父类ClassLoader,当父类ClassLoader无法加载成功时,才会再由子类ClassLoader尝试加载,这就是所谓的delegate机制。
其次,Tomcat在jvm的ClassLoader机制上增加了几个继承层次。
SystemClassLoader --> CommonClassLoader -->(ServerClassLoader | SharedClassLoader --> WebAppClassLoader)。
CommonClassLoader用来加载${CATALINA_HOME}/conf/catalina.properties
中common.loader配置目录下的类文件,一般是用来加载${CATALINA_HOME}/lib
下的文件。该loader加载的类为tomcat服务器和tomcat下面的所有webApp所共享。
ServerClassLoader用来加载${CATALINA_HOME}/conf/catalina.properties
中server.loader配置目录下的类文件,一般是用来加载${CATALINA_HOME}/server
下的文件。该loader加载的类为tomcat服务器所独有核心类,tomcat下面的WebApp无法访问。
SharedClassLoader用来加载${CATALINA_HOME}/conf/catalina.properties
中shared.loader配置目录下的类文件,一般是用来加载${CATALINA_HOME}/shared
下的文件。该loader加载的类为tomcat下面的所有webApp所共享。
WebAppClassLoader用来加载${CATALINA_HOME}/webapps/
目录下每个WebApp应用的/WEB-INF/class,/WEB-INF/lib的类文件,每个WebApp对应一个WebAppClassLoader,用来加载其所需要的类文件。
最后,说一下delegate配置的意义。
True,表示tomcat将遵循JVM的delegate机制,即一个WebAppClassLoader在加载类文件时,会先递交给SharedClassLoader加载,SharedClassLoader无法加载成功,会继续向自己的父类委托,一直到BootstarpClassLoader,如果都没有加载成功,则最后由WebAppClassLoader自己进行加载。
False,表示将不遵循这个delegate机制,即WebAppClassLoader在加载类文件时,会优先自己尝试加载,如果加载失败,才会沿着继承链,依次委托父类加载。
在此说一下配置为False需要注意的问题:一旦配置为False,如果你在WebApp中自己定义了一个java.lang.String,则这个String类会有可能覆盖掉jdk中的String类,这也许不是你想要的结果。另外对于多个WebApp公用jar包,你可能会放到${CATALINA_HOME}/shared目录中共享,但是一不小心在应用的/WEB-INF/lib中也包含了一个同名的但版本不一致的jar的话,这就有可能会导致很多奇怪的问题。
报错信息如下:
java.lang.NoSuchMethodException: org.apache.catalina.deploy.WebXml addFilter
at org.apache.tomcat.util.IntrospectionUtils.callMethod1(IntrospectionUtils.java:853)
at org.apache.tomcat.util.digester.SetNextRule.end(SetNextRule.java:201)
at org.apache.tomcat.util.digester.Digester.endElement(Digester.java:1081)
at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.endElement(AbstractSAXParser.java:601)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanEndElement(XMLDocumentFragmentScannerImpl.java:1774)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl
F
r
a
g
m
e
n
t
C
o
n
t
e
n
t
D
r
i
v
e
r
.
n
e
x
t
(
X
M
L
D
o
c
u
m
e
n
t
F
r
a
g
m
e
n
t
S
c
a
n
n
e
r
I
m
p
l
.
j
a
v
a
:
2930
)
a
t
c
o
m
.
s
u
n
.
o
r
g
.
a
p
a
c
h
e
.
x
e
r
c
e
s
.
i
n
t
e
r
n
a
l
.
i
m
p
l
.
X
M
L
D
o
c
u
m
e
n
t
S
c
a
n
n
e
r
I
m
p
l
.
n
e
x
t
(
X
M
L
D
o
c
u
m
e
n
t
S
c
a
n
n
e
r
I
m
p
l
.
j
a
v
a
:
648
)
a
t
c
o
m
.
s
u
n
.
o
r
g
.
a
p
a
c
h
e
.
x
e
r
c
e
s
.
i
n
t
e
r
n
a
l
.
i
m
p
l
.
X
M
L
D
o
c
u
m
e
n
t
F
r
a
g
m
e
n
t
S
c
a
n
n
e
r
I
m
p
l
.
s
c
a
n
D
o
c
u
m
e
n
t
(
X
M
L
D
o
c
u
m
e
n
t
F
r
a
g
m
e
n
t
S
c
a
n
n
e
r
I
m
p
l
.
j
a
v
a
:
510
)
a
t
c
o
m
.
s
u
n
.
o
r
g
.
a
p
a
c
h
e
.
x
e
r
c
e
s
.
i
n
t
e
r
n
a
l
.
p
a
r
s
e
r
s
.
X
M
L
11
C
o
n
f
i
g
u
r
a
t
i
o
n
.
p
a
r
s
e
(
X
M
L
11
C
o
n
f
i
g
u
r
a
t
i
o
n
.
j
a
v
a
:
807
)
a
t
c
o
m
.
s
u
n
.
o
r
g
.
a
p
a
c
h
e
.
x
e
r
c
e
s
.
i
n
t
e
r
n
a
l
.
p
a
r
s
e
r
s
.
X
M
L
11
C
o
n
f
i
g
u
r
a
t
i
o
n
.
p
a
r
s
e
(
X
M
L
11
C
o
n
f
i
g
u
r
a
t
i
o
n
.
j
a
v
a
:
737
)
a
t
c
o
m
.
s
u
n
.
o
r
g
.
a
p
a
c
h
e
.
x
e
r
c
e
s
.
i
n
t
e
r
n
a
l
.
p
a
r
s
e
r
s
.
X
M
L
P
a
r
s
e
r
.
p
a
r
s
e
(
X
M
L
P
a
r
s
e
r
.
j
a
v
a
:
107
)
a
t
c
o
m
.
s
u
n
.
o
r
g
.
a
p
a
c
h
e
.
x
e
r
c
e
s
.
i
n
t
e
r
n
a
l
.
p
a
r
s
e
r
s
.
A
b
s
t
r
a
c
t
S
A
X
P
a
r
s
e
r
.
p
a
r
s
e
(
A
b
s
t
r
a
c
t
S
A
X
P
a
r
s
e
r
.
j
a
v
a
:
1205
)
a
t
c
o
m
.
s
u
n
.
o
r
g
.
a
p
a
c
h
e
.
x
e
r
c
e
s
.
i
n
t
e
r
n
a
l
.
j
a
x
p
.
S
A
X
P
a
r
s
e
r
I
m
p
l
FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:2930) at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:648) at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:510) at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:807) at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:737) at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:107) at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1205) at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl
FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:2930)atcom.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:648)atcom.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:510)atcom.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:807)atcom.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:737)atcom.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:107)atcom.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1205)atcom.sun.org.apache.xerces.internal.jaxp.SAXParserImplJAXPSAXParser.parse(SAXParserImpl.java:522)
at org.apache.tomcat.util.digester.Digester.parse(Digester.java:1576)
at org.apache.catalina.startup.ContextConfig.parseWebXml(ContextConfig.java:1855)
at org.apache.catalina.startup.ContextConfig.webConfig(ContextConfig.java:1255)
at org.apache.catalina.startup.ContextConfig.configureStart(ContextConfig.java:881)
at org.apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfig.java:388)
at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:117)
at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:90)
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5566)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:145)
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:1018)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:994)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:652)
at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:1296)
at org.apache.catalina.startup.HostConfig
D
e
p
l
o
y
D
i
r
e
c
t
o
r
y
.
r
u
n
(
H
o
s
t
C
o
n
f
i
g
.
j
a
v
a
:
2039
)
a
t
j
a
v
a
.
u
t
i
l
.
c
o
n
c
u
r
r
e
n
t
.
E
x
e
c
u
t
o
r
s
DeployDirectory.run(HostConfig.java:2039) at java.util.concurrent.Executors
DeployDirectory.run(HostConfig.java:2039)atjava.util.concurrent.ExecutorsRunnableAdapter.call(Executors.java:441)
at java.util.concurrent.FutureTask
S
y
n
c
.
i
n
n
e
r
R
u
n
(
F
u
t
u
r
e
T
a
s
k
.
j
a
v
a
:
303
)
a
t
j
a
v
a
.
u
t
i
l
.
c
o
n
c
u
r
r
e
n
t
.
F
u
t
u
r
e
T
a
s
k
.
r
u
n
(
F
u
t
u
r
e
T
a
s
k
.
j
a
v
a
:
138
)
a
t
j
a
v
a
.
u
t
i
l
.
c
o
n
c
u
r
r
e
n
t
.
T
h
r
e
a
d
P
o
o
l
E
x
e
c
u
t
o
r
Sync.innerRun(FutureTask.java:303) at java.util.concurrent.FutureTask.run(FutureTask.java:138) at java.util.concurrent.ThreadPoolExecutor
Sync.innerRun(FutureTask.java:303)atjava.util.concurrent.FutureTask.run(FutureTask.java:138)atjava.util.concurrent.ThreadPoolExecutorWorker.runTask(ThreadPoolExecutor.java:886)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
at java.lang.Thread.run(Thread.java:619)