代码之家  ›  专栏  ›  技术社区  ›  Ravi

通过gradle通过shadow jar构建Marklogic java客户端api异常

  •  0
  • Ravi  · 技术社区  · 8 年前

    我使用marklogic java客户端api提取文档,在intellij中可以很好地工作,但当我构建一个shadow jar并运行它时,我得到以下异常

    com.sun.jersey.api.client.RequestWriter$RequestEntityWriterImpl <init>
    SEVERE: A message body writer for Java class com.marklogic.client.impl.StreamingOutputImpl, and Java type class com.marklogic.client.impl.StreamingOutputImpl, and MIME media type application/xml was not found
    Jul 07, 2016 5:29:53 PM com.sun.jersey.api.client.RequestWriter$RequestEntityWriterImpl <init>
    SEVERE: The registered message body writers compatible with the MIME media type are:
    

    我正在用gradle和我的 build.gradle 看起来像下面这样

    buildscript {
        repositories { jcenter() }
        dependencies {
            classpath 'com.github.jengelman.gradle.plugins:shadow:1.2.3'
        }
    }
    
    apply plugin: 'java'
    apply plugin: 'wrapper'
    apply plugin: 'com.github.johnrengelman.shadow'
    
    sourceCompatibility = 1.7
    targetCompatibility = 1.7
    
    repositories {
        mavenLocal()
        maven {
            url "http://nexus.abbvienet.com/content/groups/public"
        }
    }
    
    import com.github.jengelman.gradle.plugins.shadow.transformers.AppendingTransformer
    shadowJar {
        transform(AppendingTransformer) {
            resource = 'META-INF/services'
        }
    
    }
    
    dependencies {
        compile 'org.slf4j:slf4j-api:1.7.12'
        compile 'ch.qos.logback:logback-classic:1.1.3'
        compile 'com.moonlight:lfsappenders:4.0.3'
        compile group: 'org.apache.commons', name: 'commons-lang3', version: '3.0'
        compile group: 'commons-io', name: 'commons-io', version: '2.4'
        compile group: 'org.apache.commons', name: 'commons-collections4', version: '4.0'
        compile group: 'com.google.code.gson', name: 'gson', version: '2.3'
        compile group: 'com.marklogic', name: 'java-client-api', version: '3.0.1'
        compile group: 'dom4j', name: 'dom4j', version: '1.6.1'
        compile group: 'org.jdom', name: 'jdom2', version: '2.0.5'
        compile group: 'xom', name: 'xom', version: '1.2.5'
        compile group: 'jaxen', name: 'jaxen', version: '1.1.6'
        compile group: 'net.sourceforge.htmlcleaner', name: 'htmlcleaner', version: '2.4'
        compile group: 'org.apache.httpcomponents', name: 'httpclient', version: '4.4.1'
        compile group: 'org.apache.httpcomponents', name: 'httpmime', version: '4.4.1'
        compile group: 'joda-time', name: 'joda-time', version: '2.9.4'
    }
    

    我想这和我的火车表单有关…我是不是遗漏了什么?

    谢谢

    1 回复  |  直到 8 年前
        1
  •  0
  •   Ravi    8 年前

    我能够解决我的问题。导致错误的问题是来自不同jar的META-INF/服务的合并 build.gradle

    原始部分

    import com.github.jengelman.gradle.plugins.shadow.transformers.AppendingTransformer
    
            shadowJar {
                transform(AppendingTransformer) {
                    resource = 'META-INF/services'
                }
    
            }
    

    更改为以下内容

    shadowJar {
        mergeServiceFiles()
    }
    

    我使用了错误的转换..我需要合并我的所有服务文件。。