JSP无法调用EJB类 提示Catalog、CatalogHome无法解析为类型
问题解决步骤
该错误是Java类加载器无法识别Catalog、CatalogHome两个类定义导致的,你将类放在JSP同目录的操作不符合Java Web项目的类加载规则,按以下步骤调整即可:
- 首先补充类的包声明:你当前给出的两个接口代码没有声明包,而JSP的page指令已经导入了
project.server.*包,需要在两个接口的代码第一行添加package project.server;声明。 - 调整编译后类的存放路径:将两个接口编译得到的
Catalog.class、CatalogHome.class文件,放到项目的WEB-INF/classes/project/server/目录下,必须完全匹配包名对应的文件夹层级,Web根目录(JSP存放的目录)不会被类加载器扫描Java类定义。 - 检查EJB部署配置:你使用的是EJB2.x规范,需要确认EJB模块的
ejb-jar.xml部署描述符中已经正确配置了这两个接口的Home接口、Remote接口和Bean实现类的映射关系。如果是EAR包部署,需要在Web模块的MANIFEST.MF中配置EJB模块的依赖,保证Web模块可以加载到EJB的类定义。 - 确认容器支持:普通Tomcat本身不支持EJB规范,需要使用支持EJB的应用服务器,比如TomEE、WildFly、WebLogic等。
- 清理缓存重新部署:全量编译项目后清理应用服务器的部署缓存,再重新启动服务即可。
内容的提问来源于stack exchange,提问作者user2779311
相关产品推荐
相关产品推荐

