bytebuddy,Failed to load class "org.slf4j.impl.StaticLoggerBinder"

我们通过bytebuddy开发javaagent最终要部署到springboot项目中,javaagent引入了slf4j-api包,但是没有slf4j实现类,所有报错“failed to load class”。

这时我们有两种解决思路:
1.在javaagent中实现slf4j。
2.在javaagent 中排除slf4j,具体实现留给我们监控的springboot项目。

毫不犹豫选择第二种,因为springboot一般都有slf4j的实现,如果在javaagent中也实现的话,就会产生新的错误,重复引用,报冲突。

第二种实现方式:

    
        
            
                org.apache.maven.plugins
                maven-shade-plugin
                3.1.0
                
                    
                        package
                        
                            shade
                        
                        
                            
                                
                                    junit:junit
                                    org.slf4j:slf4j-api:jar:*
                                
                            
                            
                                
                                    
                                        com.hupu.agent.Agent
                                    
                                
                            
                            
                                
                                    *:*
                                    
                                        META-INF/*.SF
                                        META-INF/*.DSA
                                        META-INF/*.RSA
                                    
                                
                        
                    
                
            
            
                org.apache.maven.plugins
                maven-compiler-plugin
                2.3.2
                
                    1.8
                    1.8
                
            
        
    

总结:轻视了maven的功能,在maven打包的时候看到一大堆的日志输出,重来没有认真关注过。心理上抗拒这些繁杂的日志,导致需要花费更多的时间才能找到解决jar冲突的方法。其实日志是软件开发者有选择的打印的,是查找问题,解决问题的重要线索。

找到问题的根源才能解决问题,网上找到的答案也需要自己分析才能真正解决问题。

你可能感兴趣的:(bytebuddy,Failed to load class "org.slf4j.impl.StaticLoggerBinder")