我们使用的是 WSO2 应用服务器版本 5.0.1。如果我在 JSP 页面中使用 javax.crypto 包,访问时无法编译。为了验证这一点,我将 jce.jar 文件复制到了我们的 Web 应用程序的 WEB-INF/lib 文件夹中。如果 jce.jar 文件存在于 WEB-INF/lib 文件夹中,则 jsp 可以正常编译,但如果我从那里删除 jce.jar,则编译失败并出现以下错误:
Generated servlet error:
The type javax.activation.DataHandler cannot be resolved. It is indirectly referenced from required .class files
An error occurred at line: 10 in the jsp file: /processPassword.jsp
Generated servlet error:
PBEKeySpec cannot be resolved to a type
An error occurred at line: 10 in the jsp file: /processPassword.jsp
Generated servlet error:
SecretKeyFactory cannot be resolved to a type
An error occurred at line: 10 in the jsp file: /processPassword.jsp
Generated servlet error:
SecretKeyFactory cannot be resolved
] with root cause
org.apache.jasper.JasperException: Unable to compile class for JSP
Generated servlet error:
The type javax.activation.DataHandler cannot be resolved. It is indirectly referenced from required .class files
An error occurred at line: 10 in the jsp file: /processPassword.jsp
Generated servlet error:
PBEKeySpec cannot be resolved to a type
An error occurred at line: 10 in the jsp file: /processPassword.jsp
Generated servlet error:
SecretKeyFactory cannot be resolved to a type
An error occurred at line: 10 in the jsp file: /processPassword.jsp
Generated servlet error:
SecretKeyFactory cannot be resolved
at org.apache.jasper.compiler.DefaultErrorHandler.javacError(DefaultErrorHandler.java:84)
at org.apache.jasper.compiler.ErrorDispatcher.javacError(ErrorDispatcher.java:328)
at org.apache.jasper.compiler.JDTCompiler.generateClass(JDTCompiler.java:414)
at org.apache.jasper.compiler.Compiler.compile(Compiler.java:297)
at org.apache.jasper.compiler.Compiler.compile(Compiler.java:276)
at org.apache.jasper.compiler.Compiler.compile(Compiler.java:264)
at org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:563)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:303)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at com.isomorphic.servlet.CompressionFilter.doFilter(CompressionFilter.java:260)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:225)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:581)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)
at org.wso2.carbon.tomcat.ext.valves.CompositeValve.invoke(CompositeValve.java:172)
at org.wso2.carbon.tomcat.ext.valves.CarbonContextCreatorValve.invoke(CarbonContextCreatorValve.java:52)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1001)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:579)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1653)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1146)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:701)
想知道什么可能导致这些编译错误以及如何避免它们而不必将 jce.jar 放在 WEB-INF/lib 中
如果我在 servlet 中使用 javax.crypto 包,它可以编译并运行良好。这让我相信 WSO2 应用程序服务器版本 5.0.1 上的 jsp 编译存在类路径问题。
有什么建议么?