java - 我将 hibernate-validator 升级到版本 6.1.5,应用程序在 WAS 8.5.5.17 上不起作用
问题描述
除了许多组件,我还使用我的应用程序:
- Spring 框架(版本 4.3.20.RELEASE)
- 休眠(版本 4.3.11.Final)
我决定将 hibernate-validator 组件从版本 5.4.3.Final 升级到 6.1.5.Final。当我在 WAS 上部署并运行我的应用程序时出现错误:
Caused by: java.lang.ClassNotFoundException: javax.el.ELManager
.
在 Tomcat 9 上一切正常。
我发现了一些想法。第一个来自https://hibernate.org/validator/documentation/getting-started/。它说:
Hibernate Validator also requires an implementation of the Unified Expression
Language (JSR 341) for evaluating dynamic expressions in constraint violation messages.
For instance, you can add the following dependency to use the JSR 341 reference
implementation:
<dependency>
<groupId>org.glassfish</groupId>
<artifactId>javax.el</artifactId>
<version></version>
</dependency>
Seconde 来自link,并且说的几乎相同:
Add:
<dependency>
<groupId>javax.el</groupId>
<artifactId>javax.el-api</artifactId>
<version>3.0.0</version>
</dependency>
我实现了这两种解决方案,但是当我尝试访问登录页面时出现新错误:
2020-07-13T11:54:59,068 ERROR DbLogEntryDao - sun.reflect.NativeMethodAccessorImpl.invoke0 (location: NativeMethodAccessorImpl.java:-2) Unexpected error at server dockerhost: [java.lang.Exception [1594641299057] : status code 500 :java.lang.VerifyError: JVMVRFY012 stack shape inconsistent; class=com/ibm/_jsp/_unk_5F_menu, method=_jspx_meth_c_forEach_0(Ljavax/servlet/jsp/tagext/JspTag;Ljavax/servlet/jsp/PageContext;)Z, pc=75; Type Mismatch, argument 1 in signature org/apache/jasper/el/ELContextWrapper.<init>:(Ljavax/el/ELContext;Ljavax/el/FunctionMapper;)V does not match
Exception Details:
Location:
com/ibm/_jsp/_unk_5F_menu._jspx_meth_c_forEach_0(Ljavax/servlet/jsp/tagext/JspTag;Ljavax/servlet/jsp/PageContext;)Z @75: JBinvokespecial
Reason:
Type 'org/apache/jasper/runtime/ProtectedFunctionMapper' (current frame, stack[8]) is not assignable to 'javax/el/FunctionMapper'
Current Frame:
bci: @75
flags: { }
locals: { 'com/ibm/_jsp/_unk_5F_menu', 'javax/servlet/jsp/tagext/JspTag', 'javax/servlet/jsp/PageContext', 'javax/servlet/jsp/JspWriter', 'org/apache/taglibs/standard/tag/rt/core/ForEachTag' }
stack: { 'org/apache/taglibs/standard/tag/rt/core/ForEachTag']
2020-07-13T11:54:59,087 ERROR ErrorPageControllerMIGRATION - Unexpected error
java.lang.Exception: java.lang.VerifyError: JVMVRFY012 stack shape inconsistent; class=com/ibm/_jsp/_unk_5F_menu, method=_jspx_meth_c_forEach_0(Ljavax/servlet/jsp/tagext/JspTag;Ljavax/servlet/jsp/PageContext;)Z, pc=75; Type Mismatch, argument 1 in signature org/apache/jasper/el/ELContextWrapper.<init>:(Ljavax/el/ELContext;Ljavax/el/FunctionMapper;)V does not match
Exception Details:
Location:
com/ibm/_jsp/_unk_5F_menu._jspx_meth_c_forEach_0(Ljavax/servlet/jsp/tagext/JspTag;Ljavax/servlet/jsp/PageContext;)Z @75: JBinvokespecial
Reason:
Type 'org/apache/jasper/runtime/ProtectedFunctionMapper' (current frame, stack[8]) is not assignable to 'javax/el/FunctionMapper'
Current Frame:
bci: @75
flags: { }
locals: { 'com/ibm/_jsp/_unk_5F_menu', 'javax/servlet/jsp/tagext/JspTag', 'javax/servlet/jsp/PageContext', 'javax/servlet/jsp/JspWriter', 'org/apache/taglibs/standard/tag/rt/core/ForEachTag' }
stack: { 'org/apache/taglibs/standard/tag/rt/core/ForEachTag', 'uninitialized', 'uninitialized', 'java/lang/String', 'javax/el/ExpressionFactory', 'uninitialized', 'uninitialized', 'javax/el/ELContext', 'org/apache/jasper/runtime/ProtectedFunctionMapper' }
Exception Handler Table:
bci [113, 149] => handler: 260
bci [156, 175] => handler: 260
bci [182, 201] => handler: 260
bci [208, 253] => handler: 260
bci [113, 149] => handler: 297
bci [156, 175] => handler: 297
bci [182, 201] => handler: 297
bci [208, 253] => handler: 297
bci [260, 289] => handler: 297
at com.ibm.ws.webcontainer.servlet.ServletWrapper.loadServlet(ServletWrapper.java:1581) ~[com.ibm.ws.webcontainer.jar:?]
你有什么科动物会导致这种情况吗?我还为WAS Libery找到了一些解决方案,但它不适用于我,因为我使用常规 WAS。
解决方案
这个链接怎么样:
https://developer.ibm.com/wasdev/downloads/#asset/features-com.ibm.websphere.appserver.el-3.0
使用 featureManager 命令,例如:
bin/featureManager install el-3.0 --when-file-exists=ignore
推荐阅读
- git - 大型测试数据文件和github
- c# - 如何将 C# 代码重写为 python - 计算 SHA1
- java - 在类的私有静态最终变量中使用动态类名
- android - 如何实现灵活且即时的应用内更新
- perl - 将字符串和哈希引用传递给子例程
- java - Spring项目无法连接数据库
- python - 加速 pandas.DataFrame.to_sql (PostgreSQL)
- nativescript - NativeScript Vue:navigatingTo、navigatingFrom等Page事件的目的是什么?
- sql - 将字符串类型的列转换为数组/记录,即嵌套列
- php - 如何在没有插件的情况下为同一文件夹十月 cms 中的静态页面创建上一个和下一个链接