为什么在main函数中run as application,执行正常;而通过tomcat发布后,就报错classnotfound?
明明两种方式的java代码是一样的啊,只是一个在main函数中,一个不再main函数中而已。
而包含这个class的jar包明明已经引入了。
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
tomcat官方文档:
http://tomcat.apache.org/tomcat-7.0-doc/class-loader-howto.html