Eclipse使用Server启动tomcat时Caused by: java.lang.NoClassDefFoundError: Lorg/apache/commons/logging/Log;

本文详细介绍了在使用Server启动tomcat项目时遇到的ClassNotFoundException错误,特别是找不到org.apache.commons.logging.Log类的问题。通过调整项目的Deployment Assembly设置,添加Maven Dependencies到Java Build Path Entries中,可以有效解决这一常见问题。

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

使用Server启动tomcat项目时报错ClassNotFoundException: org.apache.commons.logging.Log

解决方法:右击项目properties,找到Deployment Assembly,添加java build path entries,添加Maven Dependencies

### 关于 `NoClassDefFoundError` 异常的解决方案 在 Eclipse 中遇到 `java.lang.NoClassDefFoundError: org/apache/commons/fileupload/FileUploadException` 的问题通常是由于缺少必要的 JAR 文件或配置不正确引起的。以下是详细的分析和解决方法: #### 1. 缺少依赖库 该异常表明运行环境中未找到 `commons-fileupload.jar` 库中的类 `FileUploadException`。这通常是因为项目中未引入此库或者构建路径设置有误。 可以通过以下方式解决问题: - **手动添加 JAR 文件** 如果项目不是基于 Maven 或 Gradle 构建,则需要手动下载并导入 `commons-fileupload.jar` 和其依赖项 `commons-io.jar` 到项目的构建路径中[^3]。 ```plaintext https://repo.maven.apache.org/maven2/commons-fileupload/commons-fileupload/1.3.2/ ``` 将这两个 JAR 文件放入项目的 `/lib` 目录下,并通过右键单击项目 -> Build Path -> Configure Build Path -> Libraries -> Add External JARs 将它们添加到构建路径中。 - **Maven 配置** 如果是 Maven 项目,可以在 `pom.xml` 文件中添加如下依赖声明来自动管理这些库[^4]: ```xml <dependency> <groupId>commons-fileupload</groupId> <artifactId>commons-fileupload</artifactId> <version>1.3.2</version> </dependency> <dependency> <groupId>commons-io</groupId> <artifactId>commons-io</artifactId> <version>2.6</version> </dependency> ``` 执行 `mvn clean install` 命令刷新依赖后即可正常使用。 #### 2. 运行环境与部署冲突 即使开发环境下一切正常,但如果目标服务器上缺失上述 JAR 文件也可能引发同样的错误。因此需确认应用打包后的 WAR 文件已包含所需依赖[^2]。 对于 Tomcat 等 Servlet 容器来说,建议将第三方库放置在其全局 lib 路径 (`$TOMCAT_HOME/lib`) 下以供所有 Web 应用共享;当然更推荐的方式还是让每个独立的应用自行携带自己的私有版本以防不同版本间产生兼容性矛盾。 #### 3. 清理缓存重试 有 IDE 自身可能存在某些元数据损坏的情况从而影响到了正常的编译链接流程。尝试清理工作区再重新加载工程往往能有效缓解此类状况: - 在菜单栏选择 Project->Clean... 来清除现有对象; - 删除 .metadata 文件夹下的相关内容(注意备份重要资料后再操作); - 如果仍然存在问题可以考虑重建整个 workspace 结构。 --- ### 示例代码片段验证修复效果 下面给出一段简单的 Struts 文件上传功能实现作为测试依据确保问题已被妥善处理完毕: ```java import org.apache.struts.upload.FormFile; public class UploadAction extends Action { private FormFile myFile; public String execute() throws Exception{ InputStream inputStream = null; try{ byte[] buffer=new byte[(int)this.myFile.getFileSize()]; inputStream=this.myFile.getInputStream(); int length=inputStream.read(buffer); // Save the uploaded file somewhere... }finally{ if(inputStream!=null){ inputStream.close(); } } return SUCCESS; } public void setMyFile(FormFile myFile){ this.myFile=myFile; } } ``` 以上代码假设已经成功解决了之前提到过的 ClassNotFound 错误之后能够顺利运行无阻塞现象发生。 ---
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值