Skip to content

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

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

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

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