sofastack / sofa-jarslink

Jarslink is a sofa ark plugin used to manage multi-application deployment
Apache License 2.0
3.05k stars 705 forks source link

使用sofaboot 3.0 和 jarslink2.0 进行项目动态部署时报异常, 属于启动异常 #103

Closed iteaj closed 5 years ago

iteaj commented 5 years ago

Describe the bug

使用jarslink动态管理多个应用, 采用的是合并部署里面动态打包部署, 要求是能在多个应用之间进行jvm服务通信

以下是报出的异常: java.lang.LinkageError: loader constraint violation: loader (instance of com/alipay/sofa/ark/container/service/classloader/PluginClassLoader) previously initiated loading for a different type with name "org/slf4j/Logger" at java.lang.ClassLoader.defineClass1(Native Method) at java.lang.ClassLoader.defineClass(Unknown Source) at java.security.SecureClassLoader.defineClass(Unknown Source) at java.net.URLClassLoader.defineClass(Unknown Source) at java.net.URLClassLoader.access$100(Unknown Source) at java.net.URLClassLoader$1.run(Unknown Source) at java.net.URLClassLoader$1.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at com.alipay.sofa.ark.container.service.classloader.AbstractClasspathClassloader.resolveLocalClass(AbstractClasspathClassloader.java:245) at com.alipay.sofa.ark.container.service.classloader.PluginClassLoader.loadClassInternal(PluginClassLoader.java:79) at com.alipay.sofa.ark.container.service.classloader.AbstractClasspathClassloader.loadClass(AbstractClasspathClassloader.java:66) at java.lang.ClassLoader.loadClass(Unknown Source) at org.slf4j.LoggerFactory.(LoggerFactory.java:86) at com.alipay.sofa.common.log.Constants.(Constants.java:31) at com.alipay.sofa.common.utils.ReportUtil.reportWarn(ReportUtil.java:37) at com.alipay.sofa.common.log.MultiAppLoggerSpaceManager.createILoggerFactory(MultiAppLoggerSpaceManager.java:274) at com.alipay.sofa.common.log.MultiAppLoggerSpaceManager.getILoggerFactoryBySpaceName(MultiAppLoggerSpaceManager.java:220) at com.alipay.sofa.common.log.MultiAppLoggerSpaceManager.getLoggerBySpace(MultiAppLoggerSpaceManager.java:171) at com.alipay.sofa.common.log.MultiAppLoggerSpaceManager.getLoggerBySpace(MultiAppLoggerSpaceManager.java:115) at com.alipay.sofa.common.log.LoggerSpaceManager.getLoggerBySpace(LoggerSpaceManager.java:57) at com.alipay.sofa.common.log.LoggerSpaceManager.getLoggerBySpace(LoggerSpaceManager.java:42) at com.alipay.sofa.runtime.spi.log.SofaRuntimeLoggerFactory.getLogger(SofaRuntimeLoggerFactory.java:41) at com.alipay.sofa.runtime.spi.log.SofaRuntimeLoggerFactory.getLogger(SofaRuntimeLoggerFactory.java:53) at com.alipay.sofa.runtime.spring.initializer.SofaRuntimeSpringContextInitializer.initialize(SofaRuntimeSpringContextInitializer.java:44) at org.springframework.boot.SpringApplication.applyInitializers(SpringApplication.java:633) at org.springframework.boot.SpringApplication.prepareContext(SpringApplication.java:373) at org.springframework.boot.SpringApplication.run(SpringApplication.java:325) at org.springframework.boot.SpringApplication.run(SpringApplication.java:1255) at org.springframework.boot.SpringApplication.run(SpringApplication.java:1243) at com.iteaj.ark.ArkApplication.main(ArkApplication.java:14)

Expected behavior

以下是maven:

com.alipay.sofa sofa-jarslink-ark-starter ark-plugin 2.0.0-SNAPSHOT
    <dependency>
        <version>3.0.0-SNAPSHOT</version>
        <groupId>com.alipay.sofa</groupId>
        <artifactId>runtime-sofa-boot-starter</artifactId>
    </dependency>
    <dependency>
        <version>3.0.0-SNAPSHOT</version>
        <groupId>com.alipay.sofa</groupId>
        <artifactId>runtime-sofa-boot-plugin</artifactId>
    </dependency>

Actual behavior

Steps to reproduce

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

Environment

QilongZhang commented 5 years ago

麻烦提供下报错的 demo

iteaj commented 5 years ago

这个是demo demo.zip

QilongZhang commented 5 years ago

@iteaj 感谢反馈,确认是我们代码问题。已经修复,麻烦将本地 runtime-sofa-boot-plugin 3.0.0-SNAPSHOT 包删除,拉取最新的修复包

iteaj commented 5 years ago

我刚才拉取试了以下, 启动还是报错, 这个问题是什么原因导致的, 找了很久,都没找出问题的原因 ![0 f27tpf8wazgw 3s0z yf]( 8au8 1o c likf8 bhb9 https://user-images.githubusercontent.com/20572358/47980251-c4563100-e101-11e8-9ad8-b0cbd44c3333.png) 题

QilongZhang commented 5 years ago

@iteaj 你清空了本地缓存吗? 修复之后的包应该是不会报错的。

QilongZhang commented 5 years ago

修复 PR 在 https://github.com/alipay/sofa-boot/pull/259 .

iteaj commented 5 years ago

好的, 刚才重新拉了以下,已经可以