`
san_yun
  • 浏览: 2662048 次
  • 来自: 杭州
文章分类
社区版块
存档分类
最新评论

一个诡异的类冲突错误排查记录

 
阅读更多

今天遇到一个问题排查了很久,记录一下。

问题原因,日常环境的某个topology一直无法正常运行,查看日志又没有异常日志打印。现在是一段code:

logger.info("===========supplier.update!============== feedsCount=" + feedsCount);
		try {
			supplier.update(configs);
			logger.info("successfully update, totally {} feeds from {} supplier configs, path={}",
					feedsCount, configs.size(), subscribePath);
		} catch (Exception e) {
			logger.info("fail to update " + e.getMessage());
			logger.error("fail to update, totally " + feedsCount + " feeds from " + configs.size()
					+ " supplier configs, path=" + subscribePath + "",
					e);
		}

 

比较诡异的是successfully和fail to update都没有被执行。

 

后来通过远程debug才发现supplier.update内部有一个类冲突抛出NoClassDefFoundError

网上找到一片关于这个错误的说明:http://my.oschina.net/jasonultimate/blog/166932

 

为什么日志中没有异常信息,因为这个代码是通过ThreadPoolExecutor执行的:

private void runTask(Runnable task) {
	try {
		try {
		    task.run();
		} catch (RuntimeException ex) {
		    throw ex;
		}
	} finally {
		runLock.unlock();
	}
}

 可以看到他是不会抓到Error的。

分享到:
评论

相关推荐

    jar包冲突检测工具.zip

    1. 提升代码稳定性:通过检测和解决冲突,确保每个类只使用一个版本,从而避免因不同版本类导致的运行时错误。 2. 优化项目依赖:减少不必要的jar包,精简项目体积,提高应用加载速度。 3. 提高开发效率:快速定位...

    无法打出log4j日志的问题排查

    在IT行业中,日志记录是调试和监控应用程序的关键部分,特别是对于Java开发者而言,Log4j是一个非常常用的日志框架。当我们遇到“无法打出log4j日志的问题”,这通常是由于配置、环境或代码实现中的某些错误导致的。...

    C#封装的日志类库源码 支持多线程,多窗口同步显示 含例程 实际工程中使用

    在C#编程环境下,一个高效、可靠的日志类库尤为重要,尤其是当它支持多线程和多窗口同步显示时。本文将深入探讨C#封装的日志类库源码的相关知识点,并提供实际工程中的应用示例。 首先,让我们理解什么是日志类库。...

    自己实现的log类

    一个自定义的日志类,如“自己实现的log类”,能够根据特定需求提供灵活的日志处理,这对于C++开发者来说非常实用。下面我们将深入探讨这个log工具类可能包含的关键知识点,以及如何利用它进行日志管理。 首先,让...

    解决http500 内部服务错误的方法

    HTTP 500错误属于服务器端错误的一种,它表示服务器遇到了一个未曾预料的情况,阻止了它完成对请求的处理。这类错误通常是由于服务器端代码存在bug或配置问题导致的。解决这类问题需要具备一定的服务器管理知识和...

    java类查找小工具

    例如,当你看到一个运行时异常,提示找不到某个类,你可以立即使用这个工具来定位这个类的来源,判断是否导入了错误的版本或者缺失了必要的库。 使用此类工具还可以帮助优化项目结构,例如,检查是否有重复的类存在...

    ado 封装类 visual c++

    本文将深入探讨一个优秀的ADO封装类,旨在为开发者提供一个强大的工具,简化数据库交互过程。 #### ADO封装类:CJetEngine与CADODatabase ##### CJetEngine类:数据库压缩功能 CJetEngine类主要聚焦于数据库的压缩...

    java出现404的原因是_关于出现404错误的原因 关于出现500错误的原因

    有时,一个简单的拼写错误或丢失的斜杠就可能导致404错误。 2. **Web容器配置**:在Eclipse中,你需要确保在Web应用的部署描述符(如web.xml)中正确配置了请求的映射。例如,Servlet的URL路径可能没有正确地映射到...

    oracle 错误代码详解

    例如,“ORA-00001”是一个非常常见的错误,它表示违反了唯一性约束,意味着在尝试插入或更新数据时,试图插入的值与已存在的记录冲突。这通常是由于主键或唯一索引的存在导致的。解决这个问题通常需要检查插入的...

    Mysql错误编码大全.docx

    - 存储引擎返回了一个错误,具体错误代码由%d表示。 20. 错误1031:关于的表存储引擎不含该选项。 - 尝试使用的表选项不受所选存储引擎支持。 21. 错误1032:无法在中找到记录。 - 在指定表中找不到预期的记录。 ...

    php文件上传类

    8. **日志记录**:在上传过程中记录关键操作和可能出现的问题,以便于后期排查和优化。 9. **多文件上传**:随着HTML5的普及,现代浏览器支持多文件上传。类应支持一次性上传多个文件,并对每个文件分别进行处理。 ...

    LogSystem简易日志记录

    在IT行业中,日志系统是不可或缺的一部分,它用于记录应用程序运行过程中的事件、错误和调试信息,以便在问题出现时进行排查和分析。"LogSystem简易日志记录"的主题涉及了自定义日志记录器的设计与实现,我们将深入...

    一个写Log日志的类,简单高效,多线程,有临界区保护,支持按日期,时间写日志.zip

    在日志类中,可以定义一个临界区,确保每次只有一个线程能进入该区域进行写操作,从而防止并发冲突。 4. **按日期时间写日志**: - 日志通常按照日期和时间进行组织,方便查找和分析。日志类可能包含逻辑来动态...

    简单的c++日志类

    在C++编程中,日志记录是一个至关重要的实践,它帮助开发者跟踪程序运行时的状态,进行错误排查和性能分析。本模块提供了一个简单的C++日志类,旨在简化日志输出,提高开发效率。我们将详细探讨这个日志类的设计思路...

    Python技术使用问题排查与修复心得.docx

    记录异常日志和提供用户友好的错误信息,能提高用户体验并方便问题排查。 最后,代码重构和优化是持续改进代码质量的过程。通过提高代码可读性、可维护性和性能,可以使得代码更加简洁高效。工具如 PyCharm 的重构...

    生成安装包的时候提示“不可恢复的生成错误”解决办法

    在处理这类问题时,有一个重要的步骤是查看错误日志。VS2005会在生成过程中记录详细的错误信息,通过这些信息,我们可以更准确地定位问题所在。如果错误日志不够清晰,还可以尝试开启更详细的调试信息输出,以获取更...

    C#支付工具类 非常好用的支付助手

    综上所述,这个C#支付工具类是一个全面的解决方案,集成了支付过程中涉及的各种核心操作,大大降低了开发者的工作负担。使用这个工具类,开发者只需关注业务逻辑,而不用从头实现这些基础但重要的支付相关功能。无论...

    在weblogic 部署出现的 错误

    WebLogic使用类加载器机制,不同模块可能加载不同版本的同一个类,导致冲突。检查应用的类路径和依赖关系,避免版本冲突。 4. **资源未找到**:如果应用尝试访问不存在的文件、数据库连接或其他外部资源,会抛出...

    打开账套文件提示3343错误处理

    在IT领域,尤其是在企业级财务管理软件的使用过程中,可能会遇到各种各样的问题,其中“打开账套文件提示3343错误”是一个常见的错误代码,特别是在金蝶KIS行政事业版V6.2这样的专业财务软件中。这个错误通常表明在...

Global site tag (gtag.js) - Google Analytics