sofastack / sofa-ark

SOFAArk is a light-weight,java based classloader isolation framework.
https://www.sofastack.tech/projects/sofa-boot/sofa-ark-readme/
Apache License 2.0
1.56k stars 497 forks source link

动态部署时报找不到CommonLoggingApplicationListener类 #561

Closed it-linnan closed 1 year ago

it-linnan commented 2 years ago

Your question

  1. 基座基于SOFABoot3.1.5,引入rpc-sofa-boot-starter\sofa-ark-springboot-starter等依赖
  2. 模块基于SOFABoot3.1.5,依赖rpc-sofa-boot-starter的scope设置为provided
  3. 在IDE中启动基座,能够启动成功
  4. telnet1234端口,执行biz -i命令,安装模块,此时会报com.alipay.sofa.ark.exception.ArkLoaderException: [ArkBiz Loader] ark-biz-one:0.0.1-SNAPSHOT : can not load class: com.alipay.sofa.boot.logging.CommonLoggingApplicationListener
  5. 实际上在基座中有CommonLoggingApplicationListener

Your scenes

模块化开发,动态合并部署

Your advice

希望能提供更多的示例,目前提供的示例只引入了spring-boot,没有与SOFAStack结合起来

Environment

com.alipay.sofa.ark.exception.ArkLoaderException: [ArkBiz Loader] ark-biz-one:0.0.1-SNAPSHOT : can not load class: com.alipay.sofa.boot.logging.CommonLoggingApplicationListener
java.lang.reflect.InvocationTargetException
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at com.alipay.sofa.ark.bootstrap.MainMethodRunner.run(MainMethodRunner.java:48)
    at com.alipay.sofa.ark.container.model.BizModel.start(BizModel.java:286)
    at com.alipay.sofa.ark.api.ArkClient.installBiz(ArkClient.java:172)
    at com.alipay.sofa.ark.api.ArkClient.installOperation(ArkClient.java:348)
    at com.alipay.sofa.ark.api.ArkClient.installOperation(ArkClient.java:333)
    at com.alipay.sofa.ark.container.service.biz.BizCommandProvider$BizCommand$1.run(BizCommandProvider.java:249)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
    at java.lang.Thread.run(Thread.java:748)
Caused by: java.lang.IllegalArgumentException: Cannot instantiate interface org.springframework.context.ApplicationListener : com.alipay.sofa.boot.logging.CommonLoggingApplicationListener
    at org.springframework.boot.SpringApplication.createSpringFactoriesInstances(SpringApplication.java:450)
    at org.springframework.boot.SpringApplication.getSpringFactoriesInstances(SpringApplication.java:429)
    at org.springframework.boot.SpringApplication.getSpringFactoriesInstances(SpringApplication.java:420)
    at org.springframework.boot.SpringApplication.<init>(SpringApplication.java:270)
    at org.springframework.boot.SpringApplication.<init>(SpringApplication.java:249)
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:1260)
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:1248)
    at com.wish.plat.one.FoundationApplication.main(FoundationApplication.java:12)
    ... 13 more
Caused by: com.alipay.sofa.ark.exception.ArkLoaderException: [ArkBiz Loader] ark-biz-one:0.0.1-SNAPSHOT : can not load class: com.alipay.sofa.boot.logging.CommonLoggingApplicationListener
lvjing2 commented 1 year ago

有 sofaboot 例子的,请参考这里 另外你的问题,模块里与基座相同的依赖要设置成 provided,有些类的依赖需要设置成 provided。