【发布时间】:2016-04-22 12:12:41
【问题描述】:
我正在集成 hadoop2.5.0 以运行 mapreduce 作业和 spring-boot-1.2.7 版本并在包含此内容时出错
1) 存档包含超过 65535 个条目。
我的 gradle jar 依赖
jar{
from configurations.compile.collect { it.isDirectory() ? it : zipTree(it) }
2) 关于在 jar 中包含 zip64
jar{
zip64=true
from configurations.compile.collect { it.isDirectory() ? it : zipTree(it) }
我收到无效或损坏的文件
3)在添加 shadowJar 时出现错误
shadowJar{
zip64=true
}
无法在 org.springframework.boot.loader.ExecutableArchiveLauncher 读取字节
我应该如何从所有依赖项中制作一个 jar。
【问题讨论】:
-
Spring Boot 的可执行 jar 不支持 Zip64:github.com/spring-projects/spring-boot/issues/2895。你能用一个或多个嵌套的罐子代替吗?
-
我想将所有内容合并到单个 jar 中,因为我面临的番石榴依赖问题在 hadoop jar 中较旧,而 spring 正在使用最新的番石榴罐。如果我直接使用番石榴,我会遇到冲突双方采用的版本
-
有嵌套的例子吗,我试试
-
Spring Boot 的 Gradle 插件有一个重新打包任务,它将您的依赖项嵌套在 jar 中。见docs.spring.io/spring-boot/docs/current/reference/html/…。不过,我不确定它是否能很好地与 Hadoop 配合使用。避免使用番石榴可能是一个更简单的解决方案。
-
@andy ,非常感谢使用stackoverflow.com/questions/10405970/… 和github.com/spring-projects/spring-boot/issues/1310.I 解决了这个问题,添加了 hbase 和 hadoop。我从 jar 中删除了 zip64{}
标签: java spring-boot hadoop gradle