• [Java] Gradle下,SprintBoot通过JDBC访问神策数据


    SpringBoot版本: 2.2.5.RELEASE

    JDBC版本: org.apache.hive:hive-jdbc:1.1.0

    按照神策官方文档,推荐使用org.apache.hive:hive-jdbc:1.1.0这个版本的JDBC来连接。https://manual.sensorsdata.cn/sa/latest/tech_export_jdbc-1573831.html

    但会有问题,这个版本的sf4j会跟SpringBoot的sf4j有冲突。如果按照这个这个gradle设置

    plugins {
        id 'org.springframework.boot' version '2.2.5.RELEASE'
        id 'io.spring.dependency-management' version '1.0.9.RELEASE'
        id 'java'
    }
    
    group = 'com.ppwang'
    version = '0.0.1-SNAPSHOT'
    sourceCompatibility = '1.8'
    
    repositories {
        maven {
            url "http://maven.aliyun.com/nexus/content/groups/public/"
        }
        maven {
            url "https://oss.sonatype.org/content/groups/public/"
        }
        maven {
            url "https://repo.spring.io/libs-milestone/"
        }
        jcenter()
        mavenCentral()
    }
    
    dependencies {
        implementation 'org.springframework.boot:spring-boot-starter-web'
        testImplementation('org.springframework.boot:spring-boot-starter-test') {
            exclude group: 'org.junit.vintage', module: 'junit-vintage-engine'
        }
    
        compile group: 'org.apache.hive', name: 'hive-jdbc', version: '1.1.0'
        // https://mvnrepository.com/artifact/org.apache.tomcat/tomcat-jdbc
        compile group: 'org.apache.tomcat', name: 'tomcat-jdbc'
        // https://mvnrepository.com/artifact/org.springframework/spring-jdbc
        compile group: 'org.springframework', name: 'spring-jdbc'
    }
    
    test {
        useJUnitPlatform()
    }

    它会报个错出来

    SLF4J: Class path contains multiple SLF4J bindings.
    SLF4J: Found binding in [jar:file:/Users/birdylee/.gradle/caches/modules-2/files-2.1/org.slf4j/slf4j-log4j12/1.7.30/c21f55139d8141d2231214fb1feaf50a1edca95e/slf4j-log4j12-1.7.30.jar!/org/slf4j/impl/StaticLoggerBinder.class]
    SLF4J: Found binding in [jar:file:/Users/birdylee/.gradle/caches/modules-2/files-2.1/ch.qos.logback/logback-classic/1.2.3/7c4f3c474fb2c041d8028740440937705ebb473a/logback-classic-1.2.3.jar!/org/slf4j/impl/StaticLoggerBinder.class]
    SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
    SLF4J: Actual binding is of type [org.slf4j.impl.Log4jLoggerFactory]
    Exception in thread "main" java.lang.IllegalArgumentException: LoggerFactory is not a Logback LoggerContext but Logback is on the classpath. Either remove Logback or the competing implementation (class org.slf4j.impl.Log4jLoggerFactory loaded from file:/Users/birdylee/.gradle/caches/modules-2/files-2.1/org.slf4j/slf4j-log4j12/1.7.30/c21f55139d8141d2231214fb1feaf50a1edca95e/slf4j-log4j12-1.7.30.jar). If you are using WebLogic you will need to add 'org.slf4j' to prefer-application-packages in WEB-INF/weblogic.xml: org.slf4j.impl.Log4jLoggerFactory
    	at org.springframework.util.Assert.instanceCheckFailed(Assert.java:696)
    	at org.springframework.util.Assert.isInstanceOf(Assert.java:596)
    	at org.springframework.boot.logging.logback.LogbackLoggingSystem.getLoggerContext(LogbackLoggingSystem.java:281)
    	at org.springframework.boot.logging.logback.LogbackLoggingSystem.beforeInitialize(LogbackLoggingSystem.java:104)
    	at org.springframework.boot.context.logging.LoggingApplicationListener.onApplicationStartingEvent(LoggingApplicationListener.java:239)
    	at org.springframework.boot.context.logging.LoggingApplicationListener.onApplicationEvent(LoggingApplicationListener.java:220)
    	at org.springframework.context.event.SimpleApplicationEventMulticaster.doInvokeListener(SimpleApplicationEventMulticaster.java:172)
    	at org.springframework.context.event.SimpleApplicationEventMulticaster.invokeListener(SimpleApplicationEventMulticaster.java:165)
    	at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:139)
    	at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:127)
    	at org.springframework.boot.context.event.EventPublishingRunListener.starting(EventPublishingRunListener.java:70)
    	at org.springframework.boot.SpringApplicationRunListeners.starting(SpringApplicationRunListeners.java:47)
    	at org.springframework.boot.SpringApplication.run(SpringApplication.java:305)
    	at org.springframework.boot.SpringApplication.run(SpringApplication.java:1226)
    	at org.springframework.boot.SpringApplication.run(SpringApplication.java:1215)
    	at com.ppwang.bigscreen.BigscreenApplication.main(BigscreenApplication.java:10)
    
    Process finished with exit code 1

    google查了一下,主要是log的那些包重复引入了。后通过调整依赖解决。build.gradle最终如下

    plugins {
        id 'org.springframework.boot' version '2.2.5.RELEASE'
        id 'io.spring.dependency-management' version '1.0.9.RELEASE'
        id 'java'
    }
    
    group = 'com.ppwang'
    version = '0.0.1-SNAPSHOT'
    sourceCompatibility = '1.8'
    
    repositories {
        maven {
            url "http://maven.aliyun.com/nexus/content/groups/public/"
        }
        maven {
            url "https://oss.sonatype.org/content/groups/public/"
        }
        maven {
            url "https://repo.spring.io/libs-milestone/"
        }
        jcenter()
        mavenCentral()
    }
    
    dependencies {
        implementation 'org.springframework.boot:spring-boot-starter-web'
        testImplementation('org.springframework.boot:spring-boot-starter-test') {
            exclude group: 'org.junit.vintage', module: 'junit-vintage-engine'
        }
    
        implementation('org.apache.hive:hive-jdbc:1.1.0') {
            exclude group: 'org.slf4j', module: 'slf4j-log4j12'
            exclude group: 'log4j', module: 'log4j'
        }
        // https://mvnrepository.com/artifact/org.apache.tomcat/tomcat-jdbc
        compile group: 'org.apache.tomcat', name: 'tomcat-jdbc'
        // https://mvnrepository.com/artifact/org.springframework/spring-jdbc
        compile group: 'org.springframework', name: 'spring-jdbc'
    }
    
    test {
        useJUnitPlatform()
    }

    Have fun with Jave!

  • 相关阅读:
    python中不同文件中函数和类的调用
    python中使用queue实现约瑟夫环(约瑟夫问题)求解
    C语言中几个常用数学计算函数ceil(), floor(), round()的用法
    python中stack在实际中的简单应用之进制转换
    python中stack在实际中的简单应用之平衡符号
    python中两种栈实现方式的性能对比
    python实现stack并测试
    昨天的面试的一点思考
    从历代帝王的的创业经历看哪些人适合创业
    python chr()和ord()的含义和使用方法
  • 原文地址:https://www.cnblogs.com/davidhhuan/p/12564150.html
Copyright © 2020-2023  润新知