Skip to content

[Bug] [seatunnel-web] seatunnel-web integration bug ---- java.lang.NoClassDefFoundError: org/apache/seatunnel/api/table/factory/ChangeStreamTableSourceFactory #8496

@drummerglen

Description

@drummerglen

Search before asking

  • I had searched in the issues and found no similar issues.

What happened

Hi guys,

I encountered seatunnel-web integration bug with #7893 ,so i try to build the application from the latest code (2.3.9-snapshot),but the seatunntel-web application running failed.
It didn't happen in seatunnel 2.3.8 + seatunnel 1.0.2, would you please check it what's going on?

SeaTunnel Version

dev branch
2.3.9-SNAPSHOT

SeaTunnel Config

nothing about config mistake

Running Command

running seatunnel-web application
bin/seatunnel-backend-daemon.sh start
tail -f logs/seatunnel-web.log

Error Exception

2025-01-10 16:02:48.737 seatunnel seatunnel-2 INFO [main] [StartupInfoLogger.logStarting():55] - Starting SeatunnelApplication v1.0.2 using Java 1.8.0_342 on seatunnel-2 with PID 18 (/opt/seatunnel-web/libs/seatunnel-app-1.0.2.jar started by root in /opt/seatunnel-web)
2025-01-10 16:02:48.743 seatunnel seatunnel-2 INFO [main] [SpringApplication.logStartupProfileInfo():645] - No active profile set, falling back to 1 default profile: "default"
2025-01-10 16:03:03.739 seatunnel seatunnel-2 INFO [main] [Log.initialized():170] - Logging initialized @22329ms to org.eclipse.jetty.util.log.Slf4jLog
2025-01-10 16:03:04.346 seatunnel seatunnel-2 INFO [main] [JettyServletWebServerFactory.getWebServer():166] - Server initialized with port: 8801
2025-01-10 16:03:04.360 seatunnel seatunnel-2 INFO [main] [Server.doStart():375] - jetty-9.4.46.v20220331; built: 2022-03-31T16:38:08.030Z; git: bc17a0369a11ecf40bb92c839b9ef0a8ac50ea18; jvm 1.8.0_342-b07
2025-01-10 16:03:04.726 seatunnel seatunnel-2 INFO [main] [ContextHandler$Context.log():2368] - Initializing Spring embedded WebApplicationContext
2025-01-10 16:03:04.727 seatunnel seatunnel-2 INFO [main] [ServletWebServerApplicationContext.prepareWebApplicationContext():290] - Root WebApplicationContext: initialization completed in 13398 ms
2025-01-10 16:03:05.640 seatunnel seatunnel-2 INFO [main] [DefaultSessionIdManager.doStart():334] - DefaultSessionIdManager workerName=node0
2025-01-10 16:03:05.641 seatunnel seatunnel-2 INFO [main] [DefaultSessionIdManager.doStart():339] - No SessionScavenger set, using defaults
2025-01-10 16:03:05.644 seatunnel seatunnel-2 INFO [main] [HouseKeeper.startScavenging():132] - node0 Scavenging every 660000ms
2025-01-10 16:03:05.733 seatunnel seatunnel-2 INFO [main] [ContextHandler.doStart():921] - Started o.s.b.w.e.j.JettyEmbeddedWebAppContext@2aa14ae6{application,/,[file:///tmp/jetty-docbase.8801.6226319546176053955/, jar:file:/opt/seatunnel-web/libs/springfox-swagger-ui-2.6.1.jar!/META-INF/resources],AVAILABLE}
2025-01-10 16:03:05.734 seatunnel seatunnel-2 INFO [main] [Server.doStart():415] - Started @24326ms
2025-01-10 16:03:07.329 seatunnel seatunnel-2 INFO [main] [AbstractPluginDiscovery.<init>():116] - Load SeaTunnelSink Plugin from /opt/seatunnel/connectors
2025-01-10 16:03:08.342 seatunnel seatunnel-2 WARN [main] [AbstractApplicationContext.refresh():591] - Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'connectorCache' defined in URL [jar:file:/opt/seatunnel-web/libs/seatunnel-app-1.0.2.jar!/org/apache/seatunnel/app/bean/connector/ConnectorCache.class]: Instantiation of bean failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.apache.seatunnel.app.bean.connector.ConnectorCache]: Constructor threw exception; nested exception is java.lang.NoClassDefFoundError: org/apache/seatunnel/api/table/factory/ChangeStreamTableSourceFactory
2025-01-10 16:03:08.432 seatunnel seatunnel-2 INFO [main] [HouseKeeper.stopScavenging():149] - node0 Stopped scavenging
2025-01-10 16:03:08.437 seatunnel seatunnel-2 INFO [main] [ContextHandler.doStop():1159] - Stopped o.s.b.w.e.j.JettyEmbeddedWebAppContext@2aa14ae6{application,/,[file:///tmp/jetty-docbase.8801.6226319546176053955/, jar:file:/opt/seatunnel-web/libs/springfox-swagger-ui-2.6.1.jar!/META-INF/resources],STOPPED}
2025-01-10 16:03:08.533 seatunnel seatunnel-2 INFO [main] [ConditionEvaluationReportLoggingListener.logMessage():136] - 
Error starting ApplicationContext. To display the conditions report re-run your application with 'debug' enabled.
2025-01-10 16:03:08.828 seatunnel seatunnel-2 ERROR [main] [SpringApplication.reportFailure():835] - Application run failed
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'connectorCache' defined in URL [jar:file:/opt/seatunnel-web/libs/seatunnel-app-1.0.2.jar!/org/apache/seatunnel/app/bean/connector/ConnectorCache.class]: Instantiation of bean failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.apache.seatunnel.app.bean.connector.ConnectorCache]: Constructor threw exception; nested exception is java.lang.NoClassDefFoundError: org/apache/seatunnel/api/table/factory/ChangeStreamTableSourceFactory
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateBean(AbstractAutowireCapableBeanFactory.java:1334)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1232)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:582)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:542)
        at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:335)
        at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234)
        at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:333)
        at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:208)
        at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:953)
        at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:918)
        at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:583)
        at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:145)
        at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:745)
        at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:420)
        at org.springframework.boot.SpringApplication.run(SpringApplication.java:307)
        at org.springframework.boot.SpringApplication.run(SpringApplication.java:1317)
        at org.springframework.boot.SpringApplication.run(SpringApplication.java:1306)
        at org.apache.seatunnel.app.SeatunnelApplication.main(SeatunnelApplication.java:36)
Caused by: org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.apache.seatunnel.app.bean.connector.ConnectorCache]: Constructor threw exception; nested exception is java.lang.NoClassDefFoundError: org/apache/seatunnel/api/table/factory/ChangeStreamTableSourceFactory
        at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:224)
        at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:87)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateBean(AbstractAutowireCapableBeanFactory.java:1326)
        ... 17 common frames omitted
Caused by: java.lang.NoClassDefFoundError: org/apache/seatunnel/api/table/factory/ChangeStreamTableSourceFactory
        at java.lang.ClassLoader.defineClass1(Native Method)
        at java.lang.ClassLoader.defineClass(ClassLoader.java:756)
        at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
        at java.net.URLClassLoader.defineClass(URLClassLoader.java:473)
        at java.net.URLClassLoader.access$100(URLClassLoader.java:74)
        at java.net.URLClassLoader$1.run(URLClassLoader.java:369)
        at java.net.URLClassLoader$1.run(URLClassLoader.java:363)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:362)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:418)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:351)
        at java.lang.ClassLoader.defineClass1(Native Method)
        at java.lang.ClassLoader.defineClass(ClassLoader.java:756)
        at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
        at java.net.URLClassLoader.defineClass(URLClassLoader.java:473)
        at java.net.URLClassLoader.access$100(URLClassLoader.java:74)
        at java.net.URLClassLoader$1.run(URLClassLoader.java:369)
        at java.net.URLClassLoader$1.run(URLClassLoader.java:363)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:362)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:418)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:351)
        at java.lang.Class.forName0(Native Method)
        at java.lang.Class.forName(Class.java:348)
        at java.util.ServiceLoader$LazyIterator.nextService(ServiceLoader.java:370)
        at java.util.ServiceLoader$LazyIterator.next(ServiceLoader.java:404)
        at java.util.ServiceLoader$1.next(ServiceLoader.java:480)
        at java.util.Iterator.forEachRemaining(Iterator.java:116)
        at org.apache.seatunnel.api.table.factory.FactoryUtil.discoverFactories(FactoryUtil.java:263)
        at org.apache.seatunnel.plugin.discovery.AbstractPluginDiscovery.getPluginFactories(AbstractPluginDiscovery.java:350)
        at org.apache.seatunnel.plugin.discovery.AbstractPluginDiscovery.getAllPlugin(AbstractPluginDiscovery.java:287)
        at org.apache.seatunnel.app.thirdparty.framework.PluginDiscoveryUtil.getAllConnectors(PluginDiscoveryUtil.java:130)
        at org.apache.seatunnel.app.bean.connector.ConnectorCache.refresh(ConnectorCache.java:107)
        at org.apache.seatunnel.app.bean.connector.ConnectorCache.<init>(ConnectorCache.java:73)
        at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
        at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
        at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
        at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
        at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:211)
        ... 19 common frames omitted
Caused by: java.lang.ClassNotFoundException: org.apache.seatunnel.api.table.factory.ChangeStreamTableSourceFactory
        at java.net.URLClassLoader.findClass(URLClassLoader.java:387)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:418)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:351)
        ... 58 common frames omitted

Zeta or Flink or Spark Version

No response

Java or Scala Version

No response

Screenshots

No response

Are you willing to submit PR?

  • Yes I am willing to submit a PR!

Code of Conduct

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions