Eclipse中org.apache.axis2.transport.http.AxisServlet类型无法访问的问题求助
解决Axis2 1.7.9 + Java 11下AxisServlet无法访问的问题
我之前也踩过Java 11和Axis2兼容的坑,结合你的环境(Java 11、Eclipse EE 2020、Axis2 1.7.9),给你几个针对性的排查和解决步骤:
1. 确认Axis2核心依赖包完整且放置正确
AxisServlet所在的axis2-transport-http-1.7.9.jar是核心,但它还依赖其他包,你需要确保以下Jar必须放在Web项目的WEB-INF/lib目录下(不能只添加到Eclipse构建路径):
axis2-core-1.7.9.jaraxis2-kernel-1.7.9.jaraxis2-transport-http-1.7.9.jaraxis2-transport-local-1.7.9.jarcommons-logging-1.2.jar(Axis2依赖的日志包)wsdl4j-1.6.3.jar(WSDL处理依赖)
复制完成后,右键项目 → Build Path → Add to Build Path,让Eclipse识别这些依赖。
2. 处理Java 11模块化系统的兼容性问题
Java 9+的模块系统(JPMS)会限制非模块化Jar的类可见性,而Axis2 1.7.9的Jar都是非模块化的,需要做以下配置:
- 如果你的项目有
module-info.java,添加对Axis2包的开放声明:module your.project.module.name { requires axis2.core; requires axis2.transport.http; // 开放JSP所在包,允许访问Axis2类 opens com.your.jsp.package to org.apache.axis2.transport.http; } - 若无
module-info.java,直接在Eclipse中设置:右键项目 → Properties → Java Build Path → Libraries → 展开JRE System Library → 点击Access rules → Edit → Add,规则设为Accessible,路径填org/apache/axis2/**,强制开放Axis2所有包的访问权限。
3. 调整Tomcat类加载配置
Tomcat在Java 11下的类加载机制有变化,可尝试:
- 把Axis2核心Jar(尤其是
axis2-transport-http-1.7.9.jar)复制到Tomcat的lib目录下,让Tomcat全局类加载器加载这些类,避免Web项目类加载器的限制。 - 重启Tomcat后,右键项目 → Clean,再重新发布项目到Tomcat。
4. 修复自动生成的http.base.jsp导入问题
Eclipse向导生成的JSP可能存在导入错误,你可以:
从Axis2官方分发包的
webapp/WEB-INF/jsp/目录下找到标准的http.base.jsp,替换你项目中自动生成的版本,这个标准版本的导入语句是经过验证的。
另外,确认JSP的page指令包含language="java",避免语法层面的限制。
5. 清理缓存并重建项目
最后试试“万金油”操作:
- 关闭Eclipse,删除项目目录下的
.settings、bin、target(Maven项目)文件夹。 - 重新打开Eclipse,导入项目,右键项目 → Maven → Update Project(Maven项目),或Project → Build Project。
这些步骤应该能解决大部分Java 11与Axis2兼容导致的类无法访问问题。
内容的提问来源于stack exchange,提问作者Estefanía
相关产品推荐
相关产品推荐

