java-web - Java WEB:什么样的jar包必须放到WEB-INF下?有些包放外面tomcat就起不来

查看:280
本文介绍了java-web - Java WEB:什么样的jar包必须放到WEB-INF下?有些包放外面tomcat就起不来的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

有2个jar包commons-fileupload-1.3.2.jar和commons-io-2.5.jar
我开始是把这两个包和其他包一样放外面的,也就是External Libraries
写好相关的类之后,在web.xml配置servlet和mapping

<servlet>
    <servlet-name>mytest</servlet-name>
    <servlet-class>servlet.FileUploadServlet</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>mytest</servlet-name>
    <url-pattern>/upload</url-pattern>
</servlet-mapping>

然后Tomcat就无法启动,提示:

严重: ContainerBase.addChild: start:
org.apache.catalina.LifecycleException: Failed to start component

java.lang.NoClassDefFoundError: org/apache/commons/fileupload/FileUploadException

问题:
commons-fileupload和commons-io这两个jar一定要放在WEB-INF下么,为什么?
为什么不能放在External Libraries?我其他包都放在External中都能用啊


怎么这两个就进不来呢?
我在WEB-INF下新建一个lib,然后把这两个包放进去,发布的时候就有了,然后运行也正常
这两个包有什么特别的地方?为什么一定要放WEB-INF下

解决方案

idea的tomcat插件发布应用是这个Artifact

看看你的当前项目的Artifact是不是没有External Libraries里面依赖的jar包

那就再这个Artifact里面加上lib(在项目web/WEB-INF/lib下放入jar包会自动加到Artifact里面。这就是为什么你说的为什么放到WEB-INF才行的原因。当然你完全可以把依赖jar包还放在External Libraries,在Artifact这里添加上就行,不过还是推荐把依赖的jar包放在项目web/WEB-INF/lib里面,把这个文件夹作为一个jar库放在External Libraries)

之后在启动tomcat依赖问题得到解决

这篇关于java-web - Java WEB:什么样的jar包必须放到WEB-INF下?有些包放外面tomcat就起不来的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆