解决 Context initialization failed 与 TypeNotPresentException 错误
问题现象
系统启动时控制台抛出以下异常:
严重: Context initialization failed
java.lang.TypeNotPresentException: Type javax.annotation.Resource not present
Caused by: java.lang.ClassNotFoundException: javax.annotation.Resource
原因分析
该错误通常出现在使用 Struts、Spring 等框架时,框架尝试加载 javax.annotation.Resource 注解,但运行环境的类路径中缺失对应的注解规范实现。部分资料指出该问题必须使用 JDK 1.6 及以上版本,但实际上在 JDK 1.5 环境下,只需手动补充缺失的注解依赖即可解决。
解决方案
将 geronimo-annotation_1.0_spec-1.1.jar 添加至项目依赖中。
- 传统 Web 项目:下载该 JAR 包并放置于
WEB-INF/lib目录下。 - Maven 项目:在
pom.xml中添加对应依赖:<dependency> <groupId>org.apache.geronimo.specs</groupId> <artifactId>geronimo-annotation_1.0_spec</artifactId> <version>1.1</version> </dependency>
添加依赖后,框架即可正常识别并加载 @Resource 等相关注解。
验证结果
重新编译并启动应用,控制台不再抛出 ClassNotFoundException,应用上下文初始化成功,系统正常运行。

