为什么在main函数中run as application,执行正常;而通过tomcat发布后,就报错classnotfound?

为什么在main函数中run as application,执行正常;而通过tomcat发布后,就报错classnotfound?

明明两种方式的java代码是一样的啊,只是一个在main函数中,一个不再main函数中而已。

而包含这个class的jar包明明已经引入了。


为什么在main函数中run as application,执行正常;而通过tomcat发布后,就报错classnotfound?_第1张图片


tomcat有自己的classloader,而不是时候jre即Java虚拟机中的classloader,它自定了classloader。
这也是为什么在eclipse中,一样的代码,1)一个放入main函数,在eclipse中右击-run as application  2)一个放入action中即不用main函数那种,在eclipse中启动tomcat运行,不会报classnotfound。

因为在eclipse中run as application使用的是jre的classloader,而tomcat有自己的classloader,并且执行原理及加载顺序,是有区别的。


https://zhidao.baidu.com/question/263960904238373645.html


为什么在main函数中run as application,执行正常;而通过tomcat发布后,就报错classnotfound?_第2张图片

tomcat官方文档:

http://tomcat.apache.org/tomcat-7.0-doc/class-loader-howto.html


你可能感兴趣的:(为什么在main函数中run as application,执行正常;而通过tomcat发布后,就报错classnotfound?)