WSO2 Identity Server 6.1 JSP类编译失败问题求助
解决JSP编译错误:Only a type can be imported. TemplateMgtAPIClient resolves to a package
错误原因
该错误说明JSP编译器尝试导入org.wso2.carbon.identity.application.authentication.endpoint.util.TemplateMgtAPIClient时,无法找到对应的类,反而将其识别为一个包,通常由以下情况导致:
- 目标类未被正确编译生成
- 类所在的jar包未部署到
authenticationendpoint应用的类路径中 - JSP中的导入语句存在拼写错误
解决方案
检查类的存在性
- 确认源码中
org.wso2.carbon.identity.application.authentication.endpoint.util包下是否存在TemplateMgtAPIClient.java文件 - 查看编译后的target目录,确认是否生成了
TemplateMgtAPIClient.class文件(路径通常为target/classes/org/wso2/carbon/identity/application/authentication/endpoint/util/)
- 确认源码中
验证类路径配置
- 检查
<IS_HOME>/repository/deployment/server/webapps/authenticationendpoint/WEB-INF/lib目录,确认包含该类的jar包是否存在 - 若为源码编译部署,确认
authenticationendpoint模块的pom.xml中是否正确依赖了包含TemplateMgtAPIClient的模块
- 检查
清理并重新编译部署
- 删除Tomcat工作目录下的缓存文件:
rm -rf /usr/lib/wso2/wso2is/6.1.0/lib/tomcat/work/Catalina/localhost/authenticationendpoint - 清理项目编译缓存:执行
mvn clean - 重新编译打包:执行
mvn install -DskipTests - 重新部署WSO2 IS并启动服务
- 删除Tomcat工作目录下的缓存文件:
检查JSP导入语句
打开dynamic_prompt.jsp文件,确认导入语句是否正确,示例正确写法:<%@ page import="org.wso2.carbon.identity.application.authentication.endpoint.util.TemplateMgtAPIClient" %>检查是否存在类名拼写错误,或误将类导入写成包导入(如
org.wso2.carbon.identity.application.authentication.endpoint.util.*但包内无对应类)
错误日志
[2023-08-03 16:57:33,988] [] ERROR {org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/authenticationendpoint]} - Servlet [dynamic_prompt.do] in web application [/authenticationendpoint] threw load() exception org.apache.jasper.JasperException: Unable to compile class for JSP: An error occurred at line: [18] in the generated java file: [/usr/lib/wso2/wso2is/6.1.0/lib/tomcat/work/Catalina/localhost/authenticationendpoint/org/apache/jsp/dynamic_005fprompt_jsp.java] Only a type can be imported. org.wso2.carbon.identity.application.authentication.endpoint.util.TemplateMgtAPIClient resolves to a package Stacktrace: at org.apache.jasper.compiler.DefaultErrorHandler.javacError(DefaultErrorHandler.java:102) at org.apache.jasper.compiler.ErrorDispatcher.javacError(ErrorDispatcher.java:213) at org.apache.jasper.compiler.JDTCompiler.generateClass(JDTCompiler.java:498) at org.apache.jasper.compiler.Compiler.compile(Compiler.java:397) at org.apache.jasper.compiler.Compiler.compile(Compiler.java:367) at org.apache.jasper.compiler.Compiler.compile(Compiler.java:351) at org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:605) at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:399) at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:379) at org.apache.jasper.servlet.JspServlet.init(JspServlet.java:135) at org.apache.catalina.core.StandardWrapper.initServlet(StandardWrapper.java:1164) at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1117) at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:1010) at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:4957) at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5264)
内容的提问来源于stack exchange,提问作者Raghav
相关产品推荐
相关产品推荐

