Exception in thread "main" java.lang.IllegalArgumentException: Cannot instantiate interface org.springframework.context.ApplicationListener : io.seata.server.ServerApplicationListener
at org.springframework.boot.SpringApplication.createSpringFactoriesInstances(SpringApplication.java:489)
at org.springframework.boot.SpringApplication.getSpringFactoriesInstances(SpringApplication.java:471)
at org.springframework.boot.SpringApplication.getSpringFactoriesInstances(SpringApplication.java:464)
at org.springframework.boot.SpringApplication.<init>(SpringApplication.java:288)
at org.springframework.boot.SpringApplication.<init>(SpringApplication.java:267)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1365)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1354)
at io.seata.server.ServerApplication.main(ServerApplication.java:31)
Caused by: java.lang.ClassNotFoundException: io.seata.server.ServerApplicationListener
at java.net.URLClassLoader.findClass(URLClassLoader.java:387)
at java.lang.ClassLoader.loadClass(ClassLoader.java:418)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:352)
at java.lang.ClassLoader.loadClass(ClassLoader.java:351)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:348)
at org.springframework.util.ClassUtils.forName(ClassUtils.java:284)
at org.springframework.boot.SpringApplication.createSpringFactoriesInstances(SpringApplication.java:482)
... 7 more
这种是因为seata安装的版本和用的配置的版本不一致导致的,最好是先安装:docker pull之后,把安装的resource复制出来,然后替换里面的application.yaml即可,而不是采用其他版本的resource。
大概步骤:
mkdir -p seata
创建即安装seata
docker run -d \
--name seata \
seataio/seata-server
复制resouces
docker cp seata:/seata-server/resources /seata
然后替换里面的配置文件即可完成对应的配置,这样启动之后就可以正常使用了