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

添加com.alipay.sofa:runtime-sofa-boot-plugin:3.14.0-SNAPSHOT依赖报NoClassDefFoundError #541

Closed yupd closed 2 years ago

yupd commented 2 years ago

Describe the bug

Caused by: java.lang.NoClassDefFoundError: org/springframework/context/ApplicationContextAware 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 com.alipay.sofa.ark.container.service.classloader.AbstractClasspathClassLoader.resolveLocalClass(AbstractClasspathClassLoader.java:422) at com.alipay.sofa.ark.container.service.classloader.PluginClassLoader.loadClassInternal(PluginClassLoader.java:102) at com.alipay.sofa.ark.container.service.classloader.AbstractClasspathClassLoader.lambda$loadClassWithCache$0(AbstractClasspathClassLoader.java:206) at com.google.common.cache.LocalCache$LocalManualCache$1.load(LocalCache.java:4739) at com.google.common.cache.LocalCache$LoadingValueReference.loadFuture(LocalCache.java:3524) at com.google.common.cache.LocalCache$Segment.loadSync(LocalCache.java:2317) at com.google.common.cache.LocalCache$Segment.lockedGetOrLoad(LocalCache.java:2280) at com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2195) ... 90 more Caused by: com.alipay.sofa.ark.exception.ArkLoaderException: [ArkPlugin Loader] runtime-sofa-boot-plugin : can not load class: org.springframework.context.ApplicationContextAware Exception in thread "Thread-0" com.alipay.sofa.ark.exception.ArkRuntimeException: java.lang.RuntimeException: No SofaRuntimeManager Found! at com.alipay.sofa.ark.container.service.biz.DefaultBizDeployer.unDeploy(DefaultBizDeployer.java:70) at com.alipay.sofa.ark.container.service.biz.BizDeployServiceImpl.unDeploy(BizDeployServiceImpl.java:62) at com.alipay.sofa.ark.container.service.biz.BizDeployServiceImpl.dispose(BizDeployServiceImpl.java:73) at com.alipay.sofa.ark.container.service.ArkServiceContainer.stop(ArkServiceContainer.java:144) at com.alipay.sofa.ark.container.ArkContainer.stop(ArkContainer.java:248) at com.alipay.sofa.ark.container.ArkContainer$1.run(ArkContainer.java:142) at java.lang.Thread.run(Thread.java:750) Caused by: java.lang.RuntimeException: No SofaRuntimeManager Found! at com.alipay.sofa.runtime.SofaBizUninstallEventHandler.getSofaRuntimeManager(SofaBizUninstallEventHandler.java:53) at com.alipay.sofa.runtime.SofaBizUninstallEventHandler.doUninstallBiz(SofaBizUninstallEventHandler.java:42) at com.alipay.sofa.runtime.SofaBizUninstallEventHandler.handleEvent(SofaBizUninstallEventHandler.java:34) at com.alipay.sofa.runtime.SofaBizUninstallEventHandler.handleEvent(SofaBizUninstallEventHandler.java:30) at com.alipay.sofa.ark.container.service.event.EventAdminServiceImpl.sendEvent(EventAdminServiceImpl.java:74) at com.alipay.sofa.ark.container.model.BizModel.stop(BizModel.java:330) at com.alipay.sofa.ark.container.service.biz.DefaultBizDeployer.unDeploy(DefaultBizDeployer.java:66)

Minimal yet complete reproducer code (or GitHub URL to code)

Environment

gaosaroma commented 2 years ago

我修改了sofa-ark插件web-ark-plugin的springboot版本号

<artifactId>web-ark-plugin</artifactId>
<properties>
        <spring.boot.version>2.7.1</spring.boot.version>
</properties>

尝试了官方demo

  1. 官方demo: https://github.com/sofastack-guides/sofa-ark-dynamic-guides
    
    <dependency>
    <groupId>com.alipay.sofa</groupId>
    <artifactId>runtime-sofa-boot-plugin</artifactId>
    <version>3.14.0-SNAPSHOT</version>
    </dependency>
2. 官方demo: https://github.com/sofastack-guides/sofa-ark-spring-guides
org.springframework.boot spring-boot-starter-parent 2.7.1

均能够正常启动提供服务。

尝试了下你的demo: https://github.com/yupd/sofaark-multi-web-app-sample
配置有些问题:
- app-one中需要把ark相关的依赖加上;
- app-two中需要删去:sofa-ark-springboot-starter,并将其他依赖包设置成<scope>provided</scope>
修改后可以app-one正常启动,并正常biz -i 安装app-two

另:目前内嵌模式的静态合并部署社区正在开发中(https://github.com/sofastack/sofa-ark/pull/539 )
gaosaroma commented 2 years ago

但是我没有遇到你的这个问题:runtime-sofa-boot-plugin : can not load class: org.springframework.context.ApplicationContextAware

yupd commented 2 years ago

官方的例子都测过了,动态部署好用,期待静态部署功能。感谢!

lylingzhen commented 2 years ago

Thx. Closed this issue.