Exception in thread "main" java.lang.IllegalArgumentException: Cannot instantiate interface org.springframework.context.ApplicationListener : io.seata.server.ServerApplicationListenerat 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.ServerApplicationListenerat 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
然后替换里面的配置文件即可完成对应的配置,这样启动之后就可以正常使用了