Java hazelcast从3.6.5升级到3.7.4
Hi am按照hazelcast文档的说明将hazelcast从3.6.5升级到3.7.4 我遇到了一个异常,比如: java.lang.ClassCastException:com.hazelcast.spi.impl.UnmodifiableLazyList无法转换为java.util.ArrayList 我刚刚升级了hazelcast jar,我还需要升级其他jar吗 跟踪如下:Java hazelcast从3.6.5升级到3.7.4,java,maven,arraylist,hazelcast,hazelcast-imap,Java,Maven,Arraylist,Hazelcast,Hazelcast Imap,Hi am按照hazelcast文档的说明将hazelcast从3.6.5升级到3.7.4 我遇到了一个异常,比如: java.lang.ClassCastException:com.hazelcast.spi.impl.UnmodifiableLazyList无法转换为java.util.ArrayList 我刚刚升级了hazelcast jar,我还需要升级其他jar吗 跟踪如下: 2017-01-24 11:33:44 ERROR error:162 - Exception occurre
2017-01-24 11:33:44 ERROR error:162 - Exception occurred in class com.rathish.test.services.authentication.impl.LocalClient the exception details are: Exception:
[errorCode = 504,
errorMessage = Failure - Unable to retrieve entity from database
Detailed exception trace =
java.lang.ClassCastException: com.hazelcast.spi.impl.UnmodifiableLazyList cannot be cast to java.util.ArrayList
at com.rathish.test.services.authentication.dao.RoleDao.getRoleByUserId(RoleDao.java:367)
at com.rathish.test.services.authentication.impl.LocalClient.authorizeCredentials(LocalClient.java:108)
at com.rathish.test.services.authentication.AuthValidation.validateAuthorization(AuthValidation.java:420)
at com.rathish.test.services.authentication.AuthValidation.loginValidation(AuthValidation.java:104)
at com.rathish.test.services.authentication.AuthenticationService.login(AuthenticationService.java:140)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.glassfish.jersey.server.model.internal.ResourceMethodInvocationHandlerFactory$1.invoke(ResourceMethodInvocationHandlerFactory.java:81)
at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher$1.run(AbstractJavaResourceMethodDispatcher.java:151)
at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.invoke(AbstractJavaResourceMethodDispatcher.java:171)
at org.glassfish.jersey.server.model.internal.JavaResourceMethodDispatcherProvider$ResponseOutInvoker.doDispatch(JavaResourceMethodDispatcherProvider.java:152)
at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.dispatch(AbstractJavaResourceMethodDispatcher.java:104)
at org.glassfish.jersey.server.model.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:387)
at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:331)
at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:103)
at org.glassfish.jersey.server.ServerRuntime$1.run(ServerRuntime.java:271)
at org.glassfish.jersey.internal.Errors$1.call(Errors.java:271)
at org.glassfish.jersey.internal.Errors$1.call(Errors.java:267)
at org.glassfish.jersey.internal.Errors.process(Errors.java:315)
at org.glassfish.jersey.internal.Errors.process(Errors.java:297)
at org.glassfish.jersey.internal.Errors.process(Errors.java:267)
at org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:297)
at org.glassfish.jersey.server.ServerRuntime.process(ServerRuntime.java:254)
at org.glassfish.jersey.server.ApplicationHandler.handle(ApplicationHandler.java:1028)
at org.glassfish.jersey.servlet.WebComponent.service(WebComponent.java:372)
at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:381)
at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:344)
at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:221)
at org.eclipse.equinox.http.servlet.internal.ServletRegistration.service(ServletRegistration.java:61)
at org.eclipse.equinox.http.servlet.internal.ProxyServlet.processAlias(ProxyServlet.java:141)
at org.eclipse.equinox.http.servlet.internal.ProxyServlet.process(ProxyServlet.java:74)
at org.eclipse.equinox.http.servlet.internal.ProxyServlet.doFilter(ProxyServlet.java:291)
at org.eclipse.equinox.servletbridge.BridgeServlet.process(BridgeServlet.java:149)
at org.eclipse.equinox.servletbridge.BridgeFilter.doFilter(BridgeFilter.java:52)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
at com.rathish.test.web.filter.SessionValidationFilter.doFilter(SessionValidationFilter.java:105)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:212)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:141)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:616)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:522)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1095)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:672)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1502)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1458)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Thread.java:745)
原因:java.lang.ClassCastException:com.hazelcast.spi.impl.UnmodifiableLazyList无法转换为java.util.ArrayList
位于com.rathish.test.services.authentication.dao.RoleDao.getRoleByUserId(RoleDao.java:367)
... 56多
与maven一起使用
<dependency>
<groupId>com.hazelcast</groupId>
<artifactId>hazelcast</artifactId>
<version>3.7.4</version>
</dependency>
<dependency>
<groupId>com.hazelcast</groupId>
<artifactId>hazelcast-client</artifactId>
<version>3.7.4</version>
</dependency>
com.hazelcast
黑兹卡斯特
3.7.4
com.hazelcast
hazelcast客户端
3.7.4
您确定它曾经在3.6.x中工作过吗?
我正在查看github中的历史,它总是用来扩展java.util.AbstractList
,如下所示:
公共类不可修改的Lazylist扩展了AbstractList实现了数据序列化{
因此,它从未完全基于stacktrace扩展
ArrayList
,第367行的RoleDao类如下所示(变量和方法名称完全是任意的):
(或
Collection
,取决于API声明的返回类型)。请同时附加RoleDao类。根据stacktrace判断,您使用的是ArrayList
引用,而不是List
引用,因此假设对象的具体类型(现在已更改)。不是答案。此外,问题不在于它会在任何时间点扩展ArrayList
。谢谢你的友好回答。如果它扩展了它,铸造将工作,兄弟。是的,然后我们就不会有这个问题。但是问题在于铸造本身。他的代码对具体类型进行了假设,而不是使用whAPI返回一个以上的接口。正如您在我的回答的注释中的git commit中所看到的那样,ArrayList
的一些实例改为使用UnmodifiableLazyList
。因此,问题从来都不是UnmodifiableLazyList
是否扩展ArrayList
。这就是我认为您所指的g到。@asgs看起来很可能是罪魁祸首。
ArrayList<Baz> foo = (ArrayList<Baz>)hazelCast.findById(bar);
List<Baz> foo = hazelCast.findById(bar);