我正在创建一个示例来演示liferay中的关系。我以Book实体和作者为例进行多对多关系。我正在下面的博客中创建此示例。
http://www.liferaysavvy.com/2014/01/liferay-service-builder-many-to-
many_12.html
但是我遇到了类强制转换异常的问题。在博客中也有报道说它正在抛出类强制转换异常。
11:05:00,422 ERROR [RuntimePageImpl-2][render_portlet_jsp:132] null
java.lang.ClassCastException: com.ds.portlet.library.model.impl.AuthorImpl cannot be cast to com.ds.portlet.library.model.Author
at com.ds.portlet.library.service.persistence.AuthorPersistenceImpl.fetchByPrimaryKey(AuthorPersistenceImpl.java:691)
at com.ds.portlet.library.service.persistence.AuthorPersistenceImpl.findByPrimaryKey(AuthorPersistenceImpl.java:653)
at com.ds.portlet.library.service.persistence.AuthorPersistenceImpl.findByPrimaryKey(AuthorPersistenceImpl.java:59)
at com.liferay.portal.dao.shard.advice.ShardPersistenceAdvice.invoke(ShardPersistenceAdvice.java:54)
at com.liferay.portal.service.persistence.impl.TableMapperImpl.getBaseModels(TableMapperImpl.java:400)
at com.liferay.portal.service.persistence.impl.TableMapperImpl.getRightBaseModels(TableMapperImpl.java:265)
at com.ds.portlet.library.service.persistence.BookPersistenceImpl.getAuthors(BookPersistenceImpl.java:1183)
at com.ds.portlet.library.service.persistence.BookPersistenceImpl.getAuthors(BookPersistenceImpl.java:1162)
at com.ds.portlet.library.service.persistence.BookPersistenceImpl.getAuthors(BookPersistenceImpl.java:1143)
at com.liferay.portal.dao.shard.advice.ShardPersistenceAdvice.invoke(ShardPersistenceAdvice.java:54)
at com.ds.portlet.library.service.base.AuthorLocalServiceBaseImpl.getBookAuthors(AuthorLocalServiceBaseImpl.java:374)
at com.liferay.portal.spring.aop.ServiceBeanMethodInvocation.proceed(ServiceBeanMethodInvocation.java:115)
at com.liferay.portal.spring.transaction.DefaultTransactionExecutor.execute(DefaultTransactionExecutor.java:62)
at com.liferay.portal.spring.transaction.TransactionInterceptor.invoke(TransactionInterceptor.java:51)
at com.liferay.portal.spring.aop.ServiceBeanMethodInvocation.proceed(ServiceBeanMethodInvocation.java:111)
at com.liferay.portal.spring.aop.ServiceBeanAopProxy.invoke(ServiceBeanAopProxy.java:175)
at com.ds.portlet.library.service.AuthorLocalServiceUtil.getBookAuthors(AuthorLocalServiceUtil.java:321)
at org.apache.jsp.view_jsp._jspService(view_jsp.java:420)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
我想知道这背后的原因。
我希望所涉及的类在类路径上两次出现-与David
Nebinger在这篇帖子中回答的类似。他提到的原因是:您可能同时xxx- service.jar
在全局类路径中和中使用了您的类WEB-INF/lib
,或者可能将您的类放在了全局类路径中WEB- INF/lib
并添加WEB-INF/service
为源文件夹,以便WEB-INF/classes
再次放入相同的类。
每当我看到类加载器的问题,即一个类不能类型转换到其合法的超类或接口时,这就是类路径上重复类的问题。在远古时代,这还包括一个荒谬的消息,即一个Java对象不是java.lang.Object的后代-
显然是错误的,但这意味着在类路径上的 另一个 java.lang.Object。
棘手的事情是,他们需要一些特定的实例化顺序,这些实例化顺序并不总是很容易随便复制。如果发现总是收到消息的情况,则可能总是以相同的方式失败。Liferay服务构建器中的多对多关系可能是触发这些问题的一种方式。
问题内容: 这是我尝试在Liferay Portal 6.0.6中运行portlet时得到的堆栈跟踪。 任何人都知道发生了什么事吗? 问题答案: 问题已经解决了。如上所述,问题是100%的类路径问题。尽管我用jarscan扫描了所有目录,但我找不到任何冗余。事实证明,我的同事使用了许多不必要的JAR,将它们不必要地添加到了我的WAR中。 现在正在工作! 谢谢大家;-)
例外情况: java.lang.ClassCastException:com.interconnect.library.gcm.util.checkplayServices(util.java:96),com.interconnect.library.gcm.regiseter.handleRegister(regiseter.java:53),com.interconnect.library.g
问题内容: 尝试将结果集强制转换为映射类时,我收到了hibernate类的类强制转换异常…我能够查看返回的结果集中的数据…但是它以Object []的形式返回我可以将Object []设置为List …我可以正确地进行hibernate映射吗?我从查询中获取了正确的数据,但映射不正确… 映射 映射类 参加班 主要 问题答案: 对于测试,我建议您在产生类强制转换异常的语句周围放置一个try-catc
调用AffineTransform: 它驻留在自定义形状类(YingYang)中。 当我进行调用时,当我试图从绘图面板或在类本身(如果我将返回类型更改为YingYang)中将它转换回一个YingYang时,我会得到一个类转换异常。 java.lang.ClassCastException:java.awt.Geom.Path2D$Double不能强制转换为Animation.Yingyang 任何
线程“main”java.lang.ClassCastException:java.base/jdk.internal.loader.ClassLoaders$AppClassLoader不能强制转换为java.base/java.net.urlClassLoader(位于org.springframework.boot.devtools.restart.defaultrestartinitial
我模拟了Jsch()类,并在下面的方法中获得了类强制转换异常。 原始方法。 联机获取Mockito异常。 例外情况: java.lang.ClassCastException:com.jcraft.jsch。频道$MockitoMock$1983492043不能转换为com.jcraft.jsch.ChannelSftp 测试用例调用方法。