Spring Boot获取加载的jar是哪个版本-提供解决版本冲突问题思路,guava不向后兼容问题

背景

Guava在很多框架,依赖中都有应用,问题是有些框架依赖的是1.X版本的,而其他依赖到了2.X版本,这会导致编译时找不到问题,运行时服务运行不起来以及向后兼容问题

Correct the classpath of your application so that it contains a single, compatible version of xxxx

OK,到这里我们需要如何知道服务中使用的是哪个版本的Guava依赖

提供一个代码

package com.sunfounder.ezblock.community.project;

import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.openfeign.EnableFeignClients;
import org.springframework.context.annotation.ComponentScan;
import java.io.IOException;

/**
 * @author Lucas
 * @ClassName ProjectApplication
 * @Data 2019-11-12
 * @Version 1.0
 */
@SpringBootApplication
@EnableDiscoveryClient
@EnableFeignClients
@ComponentScan(basePackages = "com.sunfounder.ezblock")
@MapperScan(basePackages = "com.sunfounder.ezblock.commons.mapper")
public class CommunityApplication {

    public static void main(String[] args) throws IOException {
        try {
            SpringApplication.run(CommunityApplication.class, args);
            System.out.println("version:"+new CommunityApplication().getClassResource());
        }catch (Exception e){
        	// 防止进入异常不打印
            System.out.println("version:"+new CommunityApplication().getClassResource());
        }
    }

    private String getClassResource(){
    	// 该类是某个jar包需要2.0的guava框架里有的类,当时使用的是1.6版本,在编译后找不到这个类
        return this.getClass().getResource("/com/google/common/base/MoreObjects.class").toString();
    }
}

可以通过上面的代码知道我们用的是哪个版本的Jar
在这里插入图片描述
提供一个思路希望能帮到你

你可能感兴趣的:(其他)