org.apache.tomcat.util.modeler.BaseModelMBean.invoke 调用方法[manageApp]时发生异常

本文记录了一次使用Tomcat部署文件上传项目的经历,并分享了解决部署失败的具体步骤。问题出现在使用WAR包部署时出现ClassNotFoundException异常,最终通过手动导入commons-fileupload库解决。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Tomcat部署工件失败

今天学习文件上传,遇到了一些问题。

具体问题:

为了实现文件上传至服务器,将tomcat的部署修改了,学习到:
Idea部署项目的两种方式:

  • war模式,将项目以war包的形式上传真实服务器的webapps目录中;
  • war exploded模式,仅仅是目录的映射,就相当于tomcat在项目源文件夹中启动一样。

于是将tomcat中原来部署的war exploded改为war,但是随即就出现了下面的问题:
具体情况如下:

// 11-Oct-2022 22:32:11.984 严重 [RMI TCP Connection(3)-127.0.0.1] org.apache.tomcat.util.modeler.BaseModelMBean.invoke 调用方法[manageApp]时发生异常
	java.lang.IllegalStateException: 启动子级时出错
		at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:729)
		at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:698)
	    ......
	Caused by: org.apache.catalina.LifecycleException: 无法启动组件[StandardEngine[Catalina].StandardHost[localhost].StandardContext[/Demo_war]]
	......
	Caused by: java.lang.NoClassDefFoundError: org/apache/commons/fileupload/FileUploadException
	......
	Caused by: java.lang.ClassNotFoundException: org.apache.commons.fileupload.FileUploadException
	......
11-Oct-2022 22:32:11.985 严重 [RMI TCP Connection(3)-127.0.0.1] org.apache.tomcat.util.modeler.BaseModelMBean.invoke 调用方法[createStandardContext]时发生异常
	javax.management.RuntimeOperationsException: 调用方法[manageApp]时发生异常
	......
	Caused by: java.lang.IllegalStateException: 启动子级时出错
	......
	Caused by: org.apache.catalina.LifecycleException: 无法启动组件[StandardEngine[Catalina].StandardHost[localhost].StandardContext[/Demo_war]]

工件 Demo:war: 部署工件时出错。请参阅服务器日志了解详细信息
	Caused by: java.lang.NoClassDefFoundError: org/apache/commons/fileupload/FileUploadException
	......
	Caused by: java.lang.ClassNotFoundException: org.apache.commons.fileupload.FileUploadException
	......

很迷惑,以前tomcat部署基本上不会出错,遇事不决靠百度,搜索到一些解决办法。

搜索到的一些解决办法

  • 因为Webservlet代码地址填写错误导致,可能是:

在这里插入图片描述
这里的斜杠/ 没有加上或者是这个路径已经被定义过了。也可以在web.xml配置文件中查看修改。

  • 因为是maven项目,也搜到说是导包错误以及版本错误之类的
  • 另外,也有说是函数内部错误导致的

具体解决方案

最后总结上一篇文章的出错点,感觉可以问题还是出在maven上,于是试了试手动导包到工件(应该是这么表述的吧),在文件-项目结构-工件中操作,如下图:
在这里插入图片描述
还是这个原因,把这两个包拉过来到lib下点击应用就OK了。
这里我先弄到war exploded里,然后能成功跑起来,然后再创建的war,再在tomcat中配置工件就部署成功了。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值