首页 文章

JavaFX Gradle构建错误,java.util.zip.ZipException:重复条目:META-INF / LICENSE

提问于
浏览
1

我正在使用Gradle构建JavaFX应用程序 . 我一直遇到的问题是META-INF / LICENSE的“重复输入”错误 .

我的jar包含对Amazon AWS SDK的依赖,因此我假设错误是由此生成的 . 到目前为止,我已经找到了这里描述的解决方案:

Duplicate Zip Entry after Gradle Plugin v0.13.1

它描述了我的确切问题,但仅限于Android Gradle的上下文中 .

具体来说,解决方案是:

android.packagingOptions {
    pickFirst 'META-INF/LICENSE.txt'
}

当然,Gradle中明显缺少这样的选项 . 我的问题:是否有一种直接的方法来解决构建代码中的这个问题,而不必手动查找和删除重复的META-INF / LICENSE事件?

为了完整性,这里是gradle assemble生成的错误:

Caused by: java.util.zip.ZipException: duplicate entry: META-INF/LICENSE
    at com.sun.javafx.tools.packager.PackagerLib.copyFromOtherJar(PackagerLib.java:1409)
    at com.sun.javafx.tools.packager.PackagerLib.jar(PackagerLib.java:1366)
    at com.sun.javafx.tools.packager.PackagerLib.packageAsJar(PackagerLib.java:288)
    ... 54 more

还有我的gradle.build脚本:

apply from: 'javafx.plugin'

repositories {
    mavenCentral()
}

dependencies {
    compile ('com.amazonaws:aws-java-sdk:1.9.13') {
        exclude group: 'commons-io', module: 'commons-io'
    }
    testCompile group: 'junit', name: 'junit', version: '4.+'
}

jar  {
   from { configurations.compile.collect { it.isDirectory() ? it : zipTree(it) } }
   manifest {
      attributes 'Main-Class': 'com.buddyware.treefrog.Main'
   }
}

1 回答

  • 1

    基于Mark Vieira的建议以及对实例的一些挖掘,我修改了build.gradle文件的jar任务,内容如下:

    jar  {
       duplicatesStrategy(DuplicatesStrategy.EXCLUDE)
       from { configurations.compile.collect { it.isDirectory() ? it : zipTree(it) } }
       manifest {
          attributes 'Main-Class': 'com.buddyware.treefrog.Main'
       }
    }
    

    运行'gradle assemble'成功,没有投诉!

相关问题