Java 类MyClass不能强制转换为类MyClass(MyClass位于loader org.glassfish的未命名模块中。[…]。WebappClassLoader@1)
为什么在Glassfish/Payara应用服务器的部署阶段有时会出现此错误? 我可以猜测应用程序服务器正在尝试使用两个不同类的两个不同类加载器,但是有没有办法阻止它这样做 我试图在网上查找一些资料,但什么也没找到 编辑:这在重新部署时发生在同一应用程序上。它可以通过重启应用服务器来解决,但显然这不是一个解决方案Java 类MyClass不能强制转换为类MyClass(MyClass位于loader org.glassfish的未命名模块中。[…]。WebappClassLoader@1),java,classloader,profiler,payara,glassfish-5,Java,Classloader,Profiler,Payara,Glassfish 5,为什么在Glassfish/Payara应用服务器的部署阶段有时会出现此错误? 我可以猜测应用程序服务器正在尝试使用两个不同类的两个不同类加载器,但是有没有办法阻止它这样做 我试图在网上查找一些资料,但什么也没找到 编辑:这在重新部署时发生在同一应用程序上。它可以通过重启应用服务器来解决,但显然这不是一个解决方案 java.lang.ClassCastException: class com.MyClass cannot be cast to class com.MyClass (com.MyC
java.lang.ClassCastException: class com.MyClass cannot be cast to class com.MyClass (com.MyClass is in unnamed module of loader org.glassfish.web.loader.WebappClassLoader@1, com.MyClass is in unnamed module of loader org.glassfish.web.loader.WebappClassLoader@2)
最后一次编辑,在Stephen C。
有哪些工具可以解释Payara/GC为什么不销毁旧对象
我可以猜测应用程序服务器正在尝试使用两个不同类的两个不同类加载器,但是有没有办法阻止它这样做
是的,我认为这就是正在发生的事情。如果相同的.class
文件由不同的类加载器加载,则生成的运行时类型不同,不能通过强制转换
有三种方法可以避免这种情况:
如果web应用程序是相同的呢?(因此,当应用程序重新部署同一应用程序时) 如果是这样的话,那么问题似乎在于你的webapp的关闭代码没有做正确的事情。由早期部署的webapp创建的Java对象正在泄漏到后期部署中
- 检查是否有东西未缓存应用程序对象
- 检查应用程序对象是否未隐藏在会话状态或线程局部变量中,或类似情况