java.lang.ClassNotFoundException在verbose日志中显示为加载时引发,也出现在OSGI



我有一个现有的Maven项目在java 1.8.0_241版本上运行良好。但这支持vaadin版本7.2.6,并且需要升级到vaadin 8以及兼容包。在进行必要的更改后,所有编译问题都得到了解决,但在执行过程中,我们的一个类GuiBaseApplication将面临ClassNotFoundException。但该类文件存在于正在使用的OSGI Bundle guibase-2.2.4-SNAPSHOT.jar中。

这个类是一个抽象类,它扩展了一个类并实现了另一个类。

public abstract class GuiBaseApplication extends UI implements CrumbTrail
{
-
-
}

但当我们获取-verbose日志时,可以看到该类被加载了一次,如下日志所示。

**[Loaded com.product.rm.common.guibase.GuiBaseApplication from file:/home/user/bcd/com.product.bss.vaadin/target/guibase-2.2.4-SNAPSHOT.jar]**

现在,Web GUI HTTP服务器已经启动并运行

然后尝试通过浏览器连接,显示以下错误。

HTTP ERROR 500 javax.servlet.ServletException: com.vaadin.server.ServiceException: com.vaadin.server.ServiceException: com.product.rm.common.guibase.GuiBaseApplication could not be loaded
URI:    /gui
STATUS: 500
MESSAGE:        javax.servlet.ServletException: com.vaadin.server.ServiceException: com.vaadin.server.ServiceException: com.product.rm.common.guibase.GuiBaseApplication could not be loaded
SERVLET:        com.product.rm.bcd.server.webgui.ApplicationServlet-27a56cca
CAUSED BY:      javax.servlet.ServletException: com.vaadin.server.ServiceException: com.vaadin.server.ServiceException: com.product.rm.common.guibase.GuiBaseApplication could not be loaded
CAUSED BY:      com.vaadin.server.ServiceException: com.vaadin.server.ServiceException: com.product.rm.common.guibase.GuiBaseApplication could not be loaded
CAUSED BY:      com.vaadin.server.ServiceException: com.product.rm.common.guibase.GuiBaseApplication could not be loaded
CAUSED BY:      java.lang.ClassNotFoundException: com.product.rm.common.guibase.GuiBaseApplication

检查现有版本和工作版本,我们可以看到这个类被加载了两次,如下所示,但带有$1和$2符号

[Loaded com.product.rm.common.guibase.GuiBaseApplication$1 from file:/home/user/bcd/com.product.bss.vaadin/target/guibase-2.2.3-SNAPSHOT.jar]
[Loaded com.product.rm.common.guibase.GuiBaseApplication$2 from file:/home/user/bcd/com.product.bss.vaadin/target/guibase-2.2.3-SNAPSHOT.jar]

我们检查并确认这两个类是GuiBaseApplication$1,GuiBaseApplication$2存在于guibase-2.2.4-SNAPSHOT.jar文件中,但仍然存在类加载问题。

如果我们能找到一些进一步研究的方向,那将是非常有帮助的。我们可以尝试找出原因,然后解决问题。

这是vaadin中的一个Bug检查页面https://floriansblog.wordpress.com/2015/04/30/vaadin-osgi-managing-the-classloader/

相关内容

  • 没有找到相关文章

最新更新